房间数据库的非仪器测试

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

我正在为服务层编写测试(not仪器测试)。我想使用实际的DAO层代替模拟,因为这会使服务层测试更具功能性(IMHO)。我知道如何创建一个用于测试的内存室内数据库:

val context = ApplicationProvider.getApplicationContext<Context>()
db = Room.inMemoryDatabaseBuilder(context, AppDatabase::class.java).build()

但是,这在其他测试中将不起作用,因为对getApplicationContext的调用会导致对InstrumentationRegistry的调用,而在非仪器测试中则无效。我意识到房间测试应该是仪器测试。他们是。所有DAO测试都是仪器测试,旨在测试已编写的查询。我也意识到这些从技术上讲不是单元测试;我可以。以我的经验,不模拟存储库层的服务层测试的脆弱性要小于那些。无论如何,我的问题是-我怎样才能实现这个目标?有没有一种方法无需工具即可检索应用程序上下文?是否有一个不需要应用程序上下文的房间数据库替身?还是我需要为测试实现另一个版本的DAO类?

我正在为服务层编写测试(而不是仪器测试)。我想使用实际的DAO层代替模拟,因为这会使服务层测试更具功能性(IMHO)。我知道该如何...
android unit-testing android-room
1个回答
0
投票
robolectric将允许您运行这种测试。
© www.soinside.com 2019 - 2024. All rights reserved.