gpt4 book ai didi

java - Android下的测试境界

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:13:20 24 4
gpt4 key购买 nike

我有一个 Android 应用程序,我在其中使用 Realm 来保存数据。我现在想使用 Realm 为这个应用程序编写单元测试。

但是,我不希望单元测试干扰我现有的 Realm 数据。所以我想为我的测试实例生成不同的 Realm 文件。我不在乎它们是否有不同的名称,或者存储在不同的目录中。

我尝试使用 RenamingDelegatingContext,但没有成功。根据https://groups.google.com/forum/#!msg/realm-java/WyHJHLOqK2c/WJFYvglIGk0J getInstance() 仅使用 Context 调用 getFilesDir(),这似乎并没有覆盖 getFilesDir() 方法,所以我最终使用我的实时数据进行测试。

接下来我尝试使用 IsolatedContext,但是 IsolatedContext.getFilesDir() 返回 null,所以这也没有成功。

最后,我尝试写了一个扩展RenamingDelegatingContext的类,覆盖getFilesDir(),返回一个不同的目录给Realm使用。我使用 AndroidStudio 的 DeviceMonitor 创建了目录,但是当我尝试使用此上下文时,Realm 失败并出现 io.realm.exceptions.RealmIOException: Failed to open 。没有权限。 open() 失败:权限被拒绝

有谁知道是否有可能在不影响实时数据的情况下测试 Realm?

最佳答案

我实际上很盲目,解决方案非常简单,只需在测试设置期间为 RealmDatabase 使用不同的名称,同时生成其配置。我的解决方案现在如下所示:

RealmConfiguration config = new RealmConfiguration.Builder(getContext()).
schemaVersion(1).
migration(new CustomMigration()).
name("test.realm").
inMemory().
build();
Realm.setDefaultConfiguration(config);

关于java - Android下的测试境界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34216044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com