浓缩咖啡检查视图不存在或不显示

fer*_*beb 5 android hamcrest android-espresso

以下语句不起作用,因为doesNotExist()返回的是一个ViewAssertion而不是匹配器。有try-catch什么办法让它在没有?

.check(either(matches(doesNotExist())).or(matches(not(isDisplayed()))));
Run Code Online (Sandbox Code Playgroud)

小智 8

如果要检查层次结构中是否不存在视图,请使用以下断言。

ViewInteraction.check(doesNotExist());
Run Code Online (Sandbox Code Playgroud)

如果要检查层次结构中是否存在视图但未向用户显示,请使用以下断言。

ViewInteraction.check(matches(not(isDisplayed())));
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。


use*_*491 5

我遇到了同样的问题,我的一个视图最初不会有特定的视图,但可以添加它并稍后隐藏它。UI 处于哪种状态取决于后台活动是否被破坏。

我最终只是编写了 doesNotExist 实现的一个变体:

public class ViewAssertions {
    public static ViewAssertion doesNotExistOrGone() {
        return new ViewAssertion() {
            @Override
            public void check(View view, NoMatchingViewException noView) {
                if (view != null && view.getVisibility() != View.GONE) {
                    assertThat("View is present in the hierarchy and not GONE: "
                               + HumanReadables.describe(view), true, is(false));
                }
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)