如何使用espresso matcher作为If else语句的条件?

blu*_*ues 7 android-gradle-plugin android-espresso

我的代码片段如下所示:

private void SelectOnline(String env) {    
     onView(withText("Some Text")).perform(click());

     if (onView(withText(env)).check(matches(isChecked()))) {
           onView(withId(R.id.dialogCancel)).perform(click());
     }else {
           onView(withText(env)).perform(click());
     }
}
Run Code Online (Sandbox Code Playgroud)

我收到了一条消息错误

required: boolean
found: ViewInteraction
Run Code Online (Sandbox Code Playgroud)

这意味着您不能使用espresso View Matchers作为if..else的条件.是否有其他方法来实现if..else语句?

Tin*_*Man 12

Espresso的设计是为了阻止开发者使用条件,因此没有官方支持的方法来实现这一点.

但是,你可以尝试一些黑客攻击.我使用try/catch语句.在你的情况下,它将是:

private void SelectTransitBackendOnline(String env) {    
     onView(withText("Some Text")).perform(click());

     try {
           onView(withText(env)).check(matches(isChecked())))
           onView(withId(R.id.dialogCancel)).perform(click());
     } catch (AssertionFailedError e) {
           onView(withText(env)).perform(click());
     }
}
Run Code Online (Sandbox Code Playgroud)