2017-10-10 65 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。沒有使用某種黑客手段,這是不可能的。你應該在你的測試中避免條件!如果有兩個單獨的測試用例,在一個測試用例中出現對話框,然後繼續進行測試,並在第二個測試用例中不出現,並從那裏繼續,那將會好得多。

相關問題