program story

match (not (isDisplayed ()))가 NoMatchingViewException으로 실패합니다.

inputbox 2020. 11. 7. 09:28
반응형

match (not (isDisplayed ()))가 NoMatchingViewException으로 실패합니다.


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에서 오류가 발생하는 이유는 무엇입니까? 여기서 무엇이 잘못 될 수 있는지 제안하십시오.

감사합니다, 놀랐습니다!


doesNotExist()대신 사용해야 합니다. 여기 에서 찾았 습니다 .


또한 귀하의 방법으로 작업하지만 다음과 같습니다.

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)))

참고 URL : https://stackoverflow.com/questions/28431647/matchesnotisdisplayed-fails-with-nomatchingviewexception

반응형