首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >hdpi设备上RecyclerView espresso测试中的NullPointerException

hdpi设备上RecyclerView espresso测试中的NullPointerException
EN

Stack Overflow用户
提问于 2020-04-02 23:21:28
回答 1查看 166关注 0票数 1

我已经为RecyclerView编写了以下测试

代码语言:javascript
运行
复制
 @Test
  fun testHomeActivity_recyclerViewIndex0_configurationChange_displaysWelcomeMessageCorrectly() {
    launch(HomeActivity::class.java).use {
      onView(isRoot()).perform(orientationLandscape())
      onView(
        atPositionOnView(R.id.home_recycler_view, 0, R.id.welcome_text_view )
      ).check(matches(withText(containsString("Welcome"))))
    }
  }

它在我的真实设备上成功通过,但在Nexus S hdpi模拟器设备上失败。出现以下错误:

代码语言:javascript
运行
复制
kotlin.KotlinNullPointerException
at org.oppia.app.recyclerview.RecyclerViewMatcher$Companion$atPositionOnView$1.matchesSafely(RecyclerViewMatcher.kt:52)
at org.oppia.app.recyclerview.RecyclerViewMatcher$Companion$atPositionOnView$1.matchesSafely(RecyclerViewMatcher.kt:28)
at org.hamcrest.TypeSafeMatcher.matches(TypeSafeMatcher.java:65)
at androidx.test.espresso.base.ViewFinderImpl$MatcherPredicateAdapter.apply(ViewFinderImpl.java:130)
at androidx.test.espresso.core.internal.deps.guava.collect.Iterators$5.computeNext(Iterators.java:637)
at androidx.test.espresso.core.internal.deps.guava.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:141)
at androidx.test.espresso.core.internal.deps.guava.collect.AbstractIterator.hasNext(AbstractIterator.java:136)
at androidx.test.espresso.base.ViewFinderImpl.getView(ViewFinderImpl.java:69)
at androidx.test.espresso.ViewInteraction$2.call(ViewInteraction.java:280)
at androidx.test.espresso.ViewInteraction$2.call(ViewInteraction.java:272)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

我不认为这真的与这个问题有关,但这里是home_recycler_view.xml:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

  <data>

    <import type="org.oppia.app.R" />

    <variable
      name="presenter"
      type="org.oppia.app.home.HomeFragmentPresenter" />
  </data>

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:gravity="center"
    android:orientation="vertical">

    <androidx.recyclerview.widget.RecyclerView
      android:id="@+id/home_recycler_view"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:clipToPadding="false"
      android:overScrollMode="never"
      android:paddingTop="36dp"
      android:paddingBottom="@dimen/bottom_white_space"
      android:scrollbars="none" />
  </LinearLayout>
</layout>

我试着像herehere一样到处找它

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-03 10:47:58

好了,我解决了这个问题。基本上,在方向改变时,循环视图会滚动一点,所以我试图找到的视图会隐藏起来。我添加了这一行来滚动到那个位置,然后检查文本。onView(withId(R.id.home_recycler_view)).perform(scrollToPosition<RecyclerView.ViewHolder>(0))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60995054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档