如何为preferencesDataStore编写Android单元测试而不是插装测试

8i9zcol2  于 2023-03-27  发布在  Android
关注(0)|答案(1)|浏览(165)

瓦尔Context.dataStore by preferencesDataStore(Constants.PREFERENCES_NAME)
@Singleton类DataStoreManager @Inject构造函数(@ApplicationContext appContext:上下文){

private val settingsDataStore: DataStore<Preferences> = appContext.dataStore

private val androidIndexVersion = intPreferencesKey(Constants.ANDROID_INDEX_VERSION)

suspend fun setXyzKey(mode: Int) {
    settingsDataStore.edit { settings ->
        settings[XyzKey] = mode
    }
}

val getXyzKey: Flow<Int> = settingsDataStore.data.map { preferences ->
    preferences[XyzKey] ?: -1
}

}
我试图找出在Android单元测试中工作而不是在仪器测试中运行的解决方案。

m1m5dgzv

m1m5dgzv1#

你想测试一个来自android的组件,它是DataStore,但由于它是android的一部分,你必须在模拟器中运行测试,这意味着你必须使用Instrumented Tests。
另一方面,你可以为你想要存储的东西创建一个接口类型,并使用DataStore实现,这样你就可以在以后的普通单元测试中将该接口的Fake实现传递给其他依赖项。

相关问题