Я тестирую DAO, и для этого мне нужно расширить его с помощью метода getAll()
, которого нет в производственном коде.
Единственный способ, который я мог бы придумать для достижения этого, - это расширить реализацию моей базы данных с помощью расширенного DAO, содержащего getAll()
, которые мне нужны. Код выглядит следующим образом:
@Database(
entities = [
OneEntity::class,
AnotherEntity::class
],
version = 1,
exportSchema = false
)
abstract class TestDatabase : RoomDatabase() {
abstract fun getOneEntityDao(): OneEntityDao
abstract fun getAnotherEntityDao(): TestAnotherEntityDao
}
@Dao
abstract class TestAnotherEntityDao : AnotherEntityDao {
@Query("""select * from $ANOTHER_ENTITY_TABLE""")
abstract fun getAll() : Single<List<AnotherEntity>>
}
Но когда я запускаю тесты, я получаю следующую ошибку:
`java.lang.RuntimeException: cannot find implementation for com.example.persistence.TestDatabase. TestDatabase_Impl does not exist`
Я уже проверил другие ответы, и единственное, что сработало для меня, - это переместить класс Testdatabase
из тестового каталога, но я бы предпочел не иметь тестового класса в своем производственном коде. Любые идеи, почему это происходит и как это решить?
Cursor
и проверил, содержит ли она ожидаемый объект данных. Нет необходимости в тестовом коде в производственном коде (нетTestDatabase
нет тестового запроса в DAO) - person Eduardo   schedule 18.09.2018