Android Espresso测试用于检查ViewPager的片段和TabView之间的同步性

时间:2016-08-01 21:32:15

标签: android-espresso

我想添加一个测试来检查当用户使用ViewPager滑动或点击TabView时,tabview的标题与片段的标题“同步”。

要开始玩它我会做一些更简单的事情,但测试会导致onView(...)行的无限循环。

以下是代码:

@RunWith(AndroidJUnit4.class)
public class MyActivityTest {

@Rule
public ActivityTestRule mActivityRule = new ActivityTestRule<>(
        MyActivity.class);

@Test
@android.support.test.annotation.UiThreadTest
public void switchTab() {
    ((MyActivity)mActivityRule.getActivity()).addMyTab("Test 1", true);

    onView(withText("Test 1"))
            .perform(click())
            .check(matches(withText("Test 1")));
}

这是我的XML:

...

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">
<android.support.design.widget.TabLayout
    android:id="@+id/pager_header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    app:tabGravity="fill"
    app:tabMode="scrollable" />
<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android" />
</LinearLayout>

...

我正在向适配器添加tab,因为我正在使用:

mTabLayout.setupWithViewPager(mPager);
...
myAdapter.add(...);

1 个答案:

答案 0 :(得分:0)

似乎主要的问题是@ android.support.test.annotation.UiThreadTest而不是@UiThread。

关于其余部分,我在GitHub上创建了一个小例子来测试TabLayout / ViewPager:https://github.com/MyWay/TabLayoutTest