Вы должны протестировать свой DAO, используя @ RunWith (AndroidJUnit4 :: class) аннотацию поверх вашего тестового класса. Запуск в качестве инструментального теста ( тестирует классы в папке androidTest ).
@RunWith(AndroidJUnit4::class)
class YourTestClass {
@get:Rule
var instantTaskExecutorRule = InstantTaskExecutorRule()
lateinit var skyScannerDatabase: SkyScannerDatabase
@Before
fun initDb() {
val app = ApplicationProvider.getApplicationContext<Context>()
skyScannerDatabase = Room.inMemoryDatabaseBuilder(app, SkyScannerDatabase::class.java)
.allowMainThreadQueries()
.setTransactionExecutor(Executors.newSingleThreadExecutor())
.build()
}
@After
fun closeDb() {
skyScannerDatabase.close()
}
// ...
@Test
fun testMethod() = runBlockingTest {
skyScannerDatabase.itineraryDao().insertItineraries(...)
}
}
В вашем модуле build.gradle должна быть указана следующая конфигурация.
android {
// ...
defaultConfig {
// ...
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
// ...
}
}
// kotlin_coroutines_version = '1.3.3'
// test_arch_core_testing = '2.1.0'
// test_ext_junit_version = '1.1.1'
// test_runner_version = '1.2.0'
dependencies {
androidTestImplementation "androidx.arch.core:core-testing:$test_arch_core_testing"
androidTestImplementation "androidx.test.ext:junit:$test_ext_junit_version"
androidTestImplementation "androidx.test:runner:$test_runner_version"
androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlin_coroutines_version"
}
Посмотрите на этот пост .