Не инструментальные тесты для комнаты базы данных - PullRequest
0 голосов
/ 24 апреля 2019

Я пишу тесты ( не инструментальные тесты) для сервисного уровня.Я хотел бы использовать фактический уровень DAO вместо макетов, поскольку это делает тесты уровня обслуживания более функциональными (IMHO).Я знаю, как создать базу данных в оперативной памяти для инструментального теста:

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

Однако в других тестах это не сработает, поскольку вызов getApplicationContext делает вызов * 1007.* который не будет работать в не инструментальных тестах.Я понимаю, что комнатные тесты должны быть инструментальными тестами;они есть.Все тесты DAO являются инструментальными тестами, целью которых является проверка написанных запросов.Я также понимаю, что это не технически модульные тесты;Я в порядке с этим.По моему опыту, тесты уровня сервиса, которые не имитируют уровень репозитория, менее хрупки, чем тесты, которые делают.Во всяком случае, мой вопрос - как я могу достичь этой цели?Есть ли способ получить контекст приложения без инструментов?Есть ли дБ в комнате, где не требуется контекст приложения?Или мне нужно реализовать другую версию классов DAO для тестов?

...