Must run under a registering instrumentation エラーの対応
コンストラクタでApplication
を必要とするViewModel
のテストを書いているときに、以下のエラーが発生した。
app/build.gradle
dependencies {
// ApplicationProviderを使用するために必要
testImplementation 'androidx.test:core:1.4.0'
}
SampleViewModelTest.kt
class SampleViewModelTest {
private lateinit var viewModel: SampleViewModelTest
@Before
fun setUp() {
// Error
val application = ApplicationProvider.getApplicationContext<Application>()
viewModel = SampleViewModelTest(application)
}
@Test
fun test() {
}
}
Error
No instrumentation registered! Must run under a registering instrumentation.
java.lang.IllegalStateException: No instrumentation registered! Must run under a registering instrumentation.
at androidx.test.platform.app.InstrumentationRegistry.getInstrumentation(InstrumentationRegistry.java:45)
at androidx.test.core.app.ApplicationProvider.getApplicationContext(ApplicationProvider.java:41)
原因
getApplicationContext
でContext
を取得しているため、Robolectric
が必要。
修正
app/build.gradle
dependencies {
// Add
testImplementation 'org.robolectric:robolectric:4.4'
testImplementation 'androidx.test:core:1.4.0'
}
SampleViewModelTest.kt
// Add annotation
@RunWith(RobolectricTestRunner::class)
class SampleViewModelTest {
private lateinit var viewModel: SampleViewModelTest
@Before
fun setUp() {
val application = ApplicationProvider.getApplicationContext<Application>()
viewModel = SampleViewModelTest(application)
}
@Test
fun test() {
}
}
Author And Source
この問題について(Must run under a registering instrumentation エラーの対応), 我々は、より多くの情報をここで見つけました https://zenn.dev/yass97/articles/96bc480590be4b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol