【发布时间】:2019-01-22 15:40:46
【问题描述】:
我正在尝试为我的业务逻辑进行一些单元测试。
数据被读取并写入 Room 数据库,因此逻辑取决于我的数据库中的内容。
我可以轻松buildInMemoryDatabase 并测试所有逻辑,但使用速度慢且需要连接设备的仪器测试。
我只想在将RoomRepository 替换为Repository 接口的其他实现的情况下运行单元测试
class RoomRepository(
private val database: RoomDatabase //actual room database
): Repository {
override fun getFooByType(type: Int): Maybe<List<Item>> {
return database.fooDao()
.getFooByType(type)
.map { names ->
names.map { name -> Item(name) }
}
.subscribeOn(Schedulers.io())
}
}
也许有办法在主机上运行 Room sqlite?
也许还有其他解决方案?
【问题讨论】:
-
你能在你的测试用例中访问数据库吗?当我创建
Dao类的对象时,我收到java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getPath()' on a null object reference错误。可能是什么问题?
标签: android unit-testing android-room