Espresso scrollTo无法处理托管LinearLayout的ScrollView,它以编程方式生成LinearLayouts

时间:2016-05-31 00:22:39

标签: android android-espresso

我有一个ScrollView,它托管一个LinearLayout,在运行时然后托管一堆LinearLayout(在之前的LinearLayout内)。

我想运行一个espresso测试,滚动到屏幕外的视图(滚动视图的下方),点击该视频将我带到下一个活动。在运行espresso测试时,我已尝试使用ViewActions.scrollTo来实现它,但它只是给了我一个未找到资源的例外。

但是,如果我在测试的点击部分之前放置断点,请手动滚动以便查看视图,然后运行“点击”按钮。测试的一部分,测试运行得非常好。

有谁知道为什么卷轴不起作用?

我将LinearLayouts id设置为其中一个数据字段,因此我知道ID。

测试代码:

@Test
public void ensureScoreCorrect() {
    int manUtdView = Math.abs("Man Utd".hashCode());
    String score = getScore();
    Log.d("Hashcode:", " " + Math.abs("Man Utd".hashCode()));

    onView(withId(manUtdView)).perform(ViewActions.scrollTo());
    onView(withId(manUtdView)).perform(click());

    onView(withId(R.id.details_score))
            .check(matches(withText(score)));
}

查看:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/all_matches_fragment"
    android:orientation="vertical"
    android:gravity="center"
    android:paddingBottom="90dp">

</LinearLayout>

谢谢!

0 个答案:

没有答案