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

.check(either(matches(doesNotExist())).or(matches(not(isDisplayed()))));

最佳答案

我有同样的问题,我的一个视图最初不会有一个特定的视图,但可以添加它并在以后隐藏它。用户界面处于哪个状态取决于背景活动是否被破坏。
最后我写了一个关于实干家实现的变体:

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

07-26 09:19