Android 使用CountingIdlingResource进行异步操作时,检测测试失败

Android 使用CountingIdlingResource进行异步操作时,检测测试失败,android,kotlin,android-espresso,android-instrumentation,Android,Kotlin,Android Espresso,Android Instrumentation,在我的检测测试中,testZoomControls总是在CountingIdlingResource递减之前执行,并且导致映射尚未初始化异常 怎么可能呢 MapViewUiControlsTest.kt 您需要Espresso.onView(..)。检查(..)或类似的IdlingResource,以使其有所不同。在这种情况下,浓缩咖啡将等待所有空闲资源空闲,然后继续下一行代码: @Test @UiThreadTest fun testZoomControls() { //this wi

在我的检测测试中,
testZoomControls
总是在
CountingIdlingResource
递减之前执行,并且导致
映射尚未初始化
异常

怎么可能呢

MapViewUiControlsTest.kt
您需要
Espresso.onView(..)。检查(..)
或类似的IdlingResource,以使其有所不同。在这种情况下,浓缩咖啡将等待所有空闲资源空闲,然后继续下一行代码:

@Test
@UiThreadTest
fun testZoomControls() {
    //this will wait until your IdlingResource is idle
    Espresso.onView(<your map view matcher>).check(matches(isDisplayed()));

    map.getMapOptions().zoomControlsEnabled = true
    Assert.assertEquals(View.VISIBLE, mapView.zoomControlsView.visibility)
}
@测试
@超线程测试
趣味测试ZoomControl(){
//这将等待您的IdlingResource空闲
Espresso.onView().check(匹配项(isDisplayed());
map.getMapOptions().zoomControlsEnabled=true
Assert.assertEquals(View.VISIBLE、mapView.ZoomControl.visibility)
}
val idlingResource = CountingIdlingResource("dummy_resource", true)

fun init() {
    idlingResource.increment()
    mapView.getMapAsync(onMapReadyCallback = object : OnMapReadyCallback {
        override fun onMapReady(map: Map) {
            this@MapViewTestActivity.map = map
            idlingResource.decrement()
        }
    })
}
@Test
@UiThreadTest
fun testZoomControls() {
    //this will wait until your IdlingResource is idle
    Espresso.onView(<your map view matcher>).check(matches(isDisplayed()));

    map.getMapOptions().zoomControlsEnabled = true
    Assert.assertEquals(View.VISIBLE, mapView.zoomControlsView.visibility)
}