UI보기가 없는지 테스트하려고합니다. 보기 선택기는 다음과 같습니다.
public static ViewInteraction onMyTestUi() {
return onView(withId(R.id.myTestId));
}
선택기는보기가 표시되는지 확인하는 데 문제가 없지만보기가 표시되지 않는 경우 오류를 표시합니다. 다음과 같이 사용하고 있습니다.
onMyTestUi().check(matches(not(isDisplayed())));
하지만 다음과 같은 오류가 발생합니다.
com.google.android.apps.common.testing.ui.espresso.NoMatchingViewException : 일치하는 계층 구조의보기 없음 : ID 포함 : is 대상보기가보기 계층 구조의 일부가 아닌 경우 Espresso.onData를 사용하여 다음 AdapterViews : android.widget.ListView {…} 중 하나에서로드합니다.
이건 이상해. UI가 없는지 확인 중이며이 뷰를 찾을 수 없을 것으로 예상됩니다. 그렇다면 Espresso에서 오류가 발생하는 이유는 무엇입니까? 여기서 무엇이 잘못 될 수 있는지 제안하십시오.
감사합니다, 놀랐습니다!
답변
답변
또한 귀하의 방법으로 작업하지만 다음과 같습니다.
onView(withId(R.id.next)).check(matches(not(isDisplayed())));
답변
onView(withText("")).check(doesNotExist());
답변
View
가 보이지 않거나 존재하지 않는지 확인하려는 경우 .
public static ViewAssertion isNotDisplayed() {
return new ViewAssertion() {
@Override
public void check(View view, NoMatchingViewException noView) {
if (view != null && isDisplayed().matches(view)) {
throw new AssertionError("View is present in the hierarchy and Displayed: "
+ HumanReadables.describe(view));
}
}
};
}
용법:
onView(withId(R.id.someView)).check(isNotDisplayed());
답변
“withEffectiveVisibility”보기 가시성을 확인하면이 옵션을 시도 할 수 있습니다.
onViewWithId(R.id.YOURVIEW).check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))