每次进行espresso测试之前,我都有一个注释
我的
但是当我运行我的测试时,出现了下一个错误:
“来自不正确线程的Realm访问。Realm对象只能在它们被创建的线程上访问。”
那么我应该如何在我的测试中正确初始化我的realm?
我发现其中一个有趣的解决方案是创建一个假的初始化realm。
@Before
,在其中初始化我的RealmManager.realm
。我的
object Realm
代码片段:init {
Realm.init(SaiApplication.context)
val builder = RealmConfiguration.Builder().schemaVersion(SCHEMA_VERSION)
builder.migration(runMigrations())
if (!BuildConfig.DEBUG) builder.encryptionKey(getOrCreateDatabaseKey())
if (SaiApplication.inMemoryDatabase) builder.inMemory()
Realm.setDefaultConfiguration(builder.build())
try {
errorOccurred = false
realm = Realm.getDefaultInstance()
} catch (e: Exception) {
errorOccurred = true
realm = Realm.getInstance(RealmConfiguration.Builder()
.schemaVersion(SCHEMA_VERSION).name(errorDbName).build())
e.log()
deleteRealmFile(realm.configuration.realmDirectory)
}
}
但是当我运行我的测试时,出现了下一个错误:
“来自不正确线程的Realm访问。Realm对象只能在它们被创建的线程上访问。”
那么我应该如何在我的测试中正确初始化我的realm?
我发现其中一个有趣的解决方案是创建一个假的初始化realm。