目前我正在尝试使用RecyclerView测试视图。该应用程序运行良好,但在测试中,它没有,它无法找到RecyclerView的方法,以下是测试文件中的依赖项
androidTestCompile ('com.android.support.test.espresso:espresso-core:2.0') {
exclude group: 'javax.inject'
exclude group: 'com.google.code.findbugs'
exclude group: 'com.android.support', module: 'support-v4'
}
androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.0') {
exclude group: 'javax.inject'
exclude group: 'com.google.guava'
exclude group: 'com.android.support', module: 'support-annotations'
exclude module: 'recyclerview-v7'
}
当我使用RecyclerViewActions.actionOnItemAtPosition时我遇到了错误,它会调用RecyclerView的scrollToPosition()方法。但它抱怨它无法找到这种方法:
java.lang.NoSuchMethodError: android.support.v7.widget.RecyclerView.scrollToPosition
at android.support.test.espresso.contrib.RecyclerViewActions$ScrollToPositionViewAction.perform(RecyclerViewActions.java:397)
at android.support.test.espresso.contrib.RecyclerViewActions$ActionOnItemAtPositionViewAction.perform(RecyclerViewActions.java:277)
at android.support.test.espresso.ViewInteraction$1.run(ViewInteraction.java:144)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
....
我认为问题是,因为它在应用程序中工作正常,在测试中,它可能使用旧版本而不是应用程序。对于测试依赖性,recyclerView的版本是21.0.3,应用版本是22.2.0。但是,在我将RecyclerView的应用版本更改为21.0.3(与测试中相同)后,它仍然具有相同的错误。
非常感谢任何评论
答案 0 :(得分:4)
好的,经过两天的搜索,我终于找到了解决方案。它与Proguard有关。事实证明,RecyclerView被Android Proguard混淆了。这就是Espresso无法找到这种方法的原因。
只需添加
即可-keep class android.support.v7.widget.RecyclerView { *; }
在proguard-rules.text中然后你就完成了。