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

时间:2015-08-11 15:08:12

标签: android-gradle 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());
     }
}

我收到错误消息

required: boolean
found: ViewInteraction

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

2 个答案:

答案 0 :(得分:9)

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());
     }
}

答案 1 :(得分:1)

根据您在try块中的操作,更改catch块的异常。我想单击cancel_button(如果存在),因此将其更改为:

\DB::table('child_table')->where('parent_id', $parent->id)->update(['parent_id' => null]);