Android 如何使用浓缩咖啡检查DialogFragment是否可见,然后才执行操作?

Android 如何使用浓缩咖啡检查DialogFragment是否可见,然后才执行操作?,android,android-espresso,Android,Android Espresso,我想做的是检查一个特定的对话框片段是否可见,并且只有当它可见时,我才想在视图(withId(R.id.start\u app))上执行这样的代码 现在我有这个代码,我不能在if条件下使用。 无论对话框片段是否可见,此方法中的两个代码都将运行` @Test public void testHowDoIBecomeCustomerButtonX() { onView(withId(R.id.cancel_button)) .inRoot(isDialog())

我想做的是检查一个特定的
对话框片段是否可见,并且只有当它可见时,我才想在视图(withId(R.id.start\u app))上执行这样的代码

现在我有这个代码,我不能在if条件下使用。 无论
对话框片段是否可见,此方法中的两个代码都将运行`

@Test
public void testHowDoIBecomeCustomerButtonX() {
    onView(withId(R.id.cancel_button))
            .inRoot(isDialog())
            .check(matches(isDisplayed()));

    onView(withId(R.id.becoming_customer)).perform(click());
}

您可以做的是将您的条件包装到一个
try catch
中,如果不满足该条件,则该条件会引发异常,从而离开
try

它可能看起来像这样:

    try {
        onView(withId(R.id.cancel_button)).check(matches(isDisplayed()));
        onView(withId(R.id.becoming_customer)).perform(click());
    } catch (NoMatchingViewException e) {
    }
如果对
取消按钮的第一次检查失败,则第二行不执行。你只需要确保你的第一个条件是正确评估

但总的来说,这是一个问题。如果不使用某种黑客,这是不可能的。你应该在你的测试中避免任何条件!最好有两个单独的测试用例,其中在一个测试用例中出现对话框,您继续进行测试,在另一个测试用例中,对话框不出现,您继续进行测试