Android 浓缩咖啡测试随机失败,可能是时间问题

Android 浓缩咖啡测试随机失败,可能是时间问题,android,android-espresso,Android,Android Espresso,我有一些测试似乎只有在我第一次运行它们时才失败,下面是其中一个示例 class OptionDialogTest { @get:Rule val activityScenarioRule = activityScenarioRule<MainActivity>() @Test fun optionDialogTest() { val selected = R.string.manage_categories var d

我有一些测试似乎只有在我第一次运行它们时才失败,下面是其中一个示例

class OptionDialogTest {
    @get:Rule
    val activityScenarioRule = activityScenarioRule<MainActivity>()

    @Test
    fun optionDialogTest() {
        val selected = R.string.manage_categories
        var dialog: OptionDialog? = null
        activityScenarioRule.scenario.onActivity { activity: MainActivity? ->
            dialog = OptionDialog("test", "test", arrayOf(R.string.drawer_categories,selected), activity as Context)
            dialog!!.setConfirm { _, _ -> }
            dialog!!.show()
        }
        onView(withId(R.id.custom)).perform(click()) //this line sometimes doesn't execute causing the test to fail, presumably it doesn't execute in time.
        onView(withText(R.string.manage_categories)).inRoot(isPlatformPopup()).perform(click())
        onView(withText(R.string.Yes)).inRoot(isDialog()).perform(click())
        assertEquals(dialog!!.getSelected(), selected)
    }
    
}
class OptionDialogTest{
@获取:规则
val activityScenarioRule=activityScenarioRule()
@试验
趣味optionDialogTest(){
val selected=R.string.manage\u类别
变量对话框:OptionDialog?=null
activityScenarioRule.scenario.onActivity{activity:MainActivity?->
dialog=OptionDialog(“测试”、“测试”、数组(R.string.drawer\u类别,选中)、活动作为上下文)
对话框!!.setConfirm{{{,}
对话框!!.show()
}
onView(withId(R.id.custom)).perform(click())//此行有时不执行导致测试失败,可能它没有及时执行。
onView(使用文本(R.string.manage_categories)).inRoot(isPlatformPopup()).perform(click())
onView(withText(R.string.Yes)).inRoot(isDialog()).perform(click())
assertEquals(对话框!!.getSelected(),已选定)
}
}
android studio给出的错误是<代码>等待视图层次结构的根具有窗口焦点而不请求布局10秒钟。如果指定了非默认的根匹配器,则它可能会选择一个从不聚焦的根。

我唯一的猜测是有些代码没有以完全异步的方式执行。我不知道其他开发人员是否经历过随机测试失败,或者我将如何着手解决这个问题


非常感谢您的帮助或想法。

您是否尝试过将故障线路更改为
onView(withId(R.id.custom))。在root(isDialog())。执行(click())
?可能是从错误的根目录中选取了视图。我没有,但这是有意义的,我会尝试一下,看看是否再次发生。您是否尝试过将错误行更改为
onView(withId(R.id.custom)).inRoot(isDialog()).perform(click())
?也许这是从错误的根源上选择的观点。我没有,但这是有道理的,我会尝试一下,看看它是否再次发生。