使用 JUnit4 测试 ProtoDatastore

问题描述 投票:0回答:1

我有一个与我定义的原始数据存储一起使用的存储库类,该类与首选项数据存储等效。我的原型文件看起来像这样: syntax = "proto3"; option java_package = "PACKAGE_NAME"; option java_multiple_files = true; message SomeItem { string itemId = 1; string itemDescription = 2; } message ListOfItems { repeated SomeItem items = 1; }

在我的应用程序中,我使用全局上下文对象实例化 Proto DataStore,如下所示:

private val Context.someItemsStore: DataStore<ListOfItems> by dataStore( fileName = DATA_STORE_FILE_NAME, serializer = SerializerClass, )

我不明白的是如何测试我的数据存储
而不嘲笑它。 IE。查看实际值被设置/删除/等。

我已阅读这篇文章

,其中展示了如何使用 Preference DataStore 来做到这一点,并隐约暗示可以使用 Proto DataStore 来完成同样的事情。

问题是测试类内部的以下逻辑:

private val testDataStore: DataStore<Preferences> = PreferenceDataStoreFactory.create( scope = testCoroutineScope, produceFile = { testContext.preferencesDataStoreFile(TEST_DATASTORE_NAME) } )

上面是实例化 Preference DataStore 的逻辑片段,但我找不到在测试类内实例化 Proto DataStore 的等效逻辑。 我也使用 RoboElectric 看到过
这个问题

我是否应该在测试中实例化我的 Proto DataStore,就像在应用程序内部进行实例化一样?如果是这样,当我尝试这样做时,我必须使用 ApplicationProvider.getApplicationContext()

获取应用程序上下文,但它没有对数据存储区的引用(与应用程序本身内部不同)。

知道如何做到这一点吗?

在网上搜索并修改一些东西后,我找到了一个可行的解决方案。所以,为了后代,我把它放在这里。
android junit4 proto-datastore
1个回答
0
投票
要创建DataStore,您可以使用DataStoreFactory.create

© www.soinside.com 2019 - 2024. All rights reserved.