我的Android活動菜單是動態填充的,我想測試這些項目是用Espresso顯示的。我知道,應該有至少1項含含「M」的一些標題字符串「N」和至少1項與標題字符串,如:如何用Espresso斷言「至少有一個視圖存在條件」?
- 項目N1
- 項目N2 稱號
- 項目M1
- 項M2
我得到的測試AmbiguousViewMatcherException
例外:
openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());
// go to subitem level 1
onView(
allOf(
withId(R.id.title),
withText("Settings"),
isDisplayed()))
.perform(click());
SystemClock.sleep(50);
// go to subitem level 2
onView(
allOf(
withId(R.id.title),
withText("Item type"),
isDisplayed()))
.perform(click());
SystemClock.sleep(50);
// items are shown
// assertions
onView(
allOf(withId(R.id.title),
withText("N"),
isDisplayed()))
.check(matches(isDisplayed()));
onView(
allOf(withId(R.id.title),
withText("M"),
isDisplayed()))
.check(matches(isDisplayed()));
什麼是正確的斷言意思是「至少有一個視圖與下面的斷言(讓我們說」標題包含...「)顯示」?
我知道我可以捕捉到異常,實際上這意味着測試通過了,但我想正確地做這件事。
,我建議你使用自定義的匹配像下面我描述的,代替捕捉異常。在這個匹配器返回與您的描述相匹配的第一個元素時,您無法完全確定是什麼導致了異常。所以你實際上可以確定有一個匹配的視圖元素。此外,捕獲異常並不是乾淨的代碼,因爲它們不是用來像這樣控制邏輯流程的。 – stamanuel