2017-10-10 30 views
0

我希望做的是检查是否有特定DialogFragment是可见且仅当它看到我要执行这样的onView(withId(R.id.start_app)).perform(click());如何使用Espresso检查DialogFragment是否可见,然后才执行操作?

代码现在我有这样的代码,我不能在一,如果条件使用。 在这种方法的代码都不管会跑的,如果Dialogfragment可见或not.`

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

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

回答

0

你可以做的是包装你的条件为try-catch那里的条件抛出一个异常,如果不满意,因此离开try块。

它可能是这个样子:

try { 
     onView(withId(R.id.cancel_button)).check(matches(isDisplayed())); 
     onView(withId(R.id.becoming_customer)).perform(click()); 
    } catch (NoMatchingViewException e) { 
    } 

如果为cancel_button第一检查失败,不执行第二行。您只需确保您的第一个条件正确评估。

但是一般来说这是一个bad pattern。没有使用某种黑客手段,这是不可能的。你应该在你的测试中避免条件!如果有两个单独的测试用例,在一个测试用例中出现对话框,然后继续进行测试,并在第二个测试用例中不出现,并从那里继续,那将会好得多。

相关问题