Espresso单元测试通过了isEnabled()和not(isEnabled())Android

时间:2018-08-24 23:10:59

标签: android unit-testing android-espresso menu-items

我正在编写一个Android单元测试,试图根据操作来测试是否启用了MenuItem。我可能不完全了解Espresso Matchers的工作原理,但这是我最初开始编写的内容。

menu.xml

<menu 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/menu_item"
        android:title="@string/menu_item"
        android:enabled="false"
        app:showAsAction="always"/>
</menu>

我的单元测试是一个片段,该片段的菜单带有一个菜单项

ExampleFragmentTest.java

public class ExampleFragmentTest {

    private ActivityForUnitTesting activityForUnitTesting;
    private FragmentManager fragmentManager;
    private ExampleFragment exampleFragment;

    @Rule
    public ActivityTestRule activityTestRule = new ActivityTestRule<>(ActivityForUnitTesting.class);

    @Before
    public void setUp() {
        activityForUnitTesting = (ActivityForUnitTesting) activityTestRule.getActivity();
        fragmentManager = activityForUnitTesting.getSupportFragmentManager();
        exampleFragment = new ExampleFragment();
    }

    @Test
    public void test_MenuItem() {
        // Both of the following tests pass
        onView(withId(R.id.menu_item)).check(matches(isEnabled()));
        onView(withId(R.id.menu_item)).check(matches(not(isEnabled())));
    }

}

我的问题是test_MenuItem()在我认为不应该通过的情况下,因为据我了解,一项检查测试了menu_item是否启用,而另一项检查没有启用。我可能不了解Matchers的工作原理,或者我的测试出现了一些我看不到的问题。

编辑(固定)

需要在我的支票之前添加EspressoTestUtils.waitForIdleSync();。现在可以工作。

0 个答案:

没有答案