【问题标题】:Assume view state with Espresso test使用 Espresso 测试假设视图状态
【发布时间】:2016-10-17 07:55:05
【问题描述】:

JUnit 库有一个类似 Assume.assumeTrue(boolean)Assume.* 指令,它的工作方式类似于断言,但不会导致测试失败而只是被忽略。

我想在测试的arrange 部分中针对我的一个观点执行此类检查,例如假设在开始测试的act 部分之前检查了已建立的复选框。

看看:

@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);

@Test
public void deselectFilter_AllFiltersSelected_CheckboxAllSelectedUnchecked() {
    //arrange
    ViewInteraction checkBox = onView(
            allOf(withId(R.id.cbCheckAll), isDisplayed()));

    //assume that this checkbox is checked 

    //act
    ...
    //assert
    ...
}

arrange 部分,我收到的不是View,而是ViewInteraction。 所以我可以像checkBox.check(matches(isChecked()))那样执行assertion这样的操作
但是如何进行假设呢?

【问题讨论】:

    标签: android junit junit4 functional-testing android-espresso


    【解决方案1】:

    您可以编写一个自定义 ViewAssertion 来假设当 Espresso ViewMatcher 失败时不会抛出 Exception

    public static ViewAssertion assume(final Matcher<? super View> viewMatcher) {
        return new ViewAssertion() {
            @Override
            public void check(final View view, final NoMatchingViewException noViewFoundException) {
                try {
                    ViewAssertions.matches(viewMatcher).check(view, noViewFoundException);
                } catch (Throwable e) {
                    // Assume that there is no exception
                    Assume.assumeNoException(e);
                }
            }
        };
    }
    

    然后您可以使用该断言来假设:

    onView(withId(R.id.cbCheckAll)).check(assume(isChecked()));
    

    【讨论】:

    • 谢谢。这可能是一种选择。
    【解决方案2】:

    我目前建立的唯一方法就是手动查找带有来自测试规则的活动的假设视图。然后通过 jUnit 假设。

    CheckBox checkBox = (CheckBox) mActivityTestRule.getActivity().findViewById(R.id.cbCheckAll);
    Assume.assumeTrue(checkBox.isChecked());
    

    如果您知道更好的方法,也许是使用 Espresso,请回答。似乎无法直接从 Espresso 命令访问视图

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多