Espresso测试中RecyclerView的NoSuchMethodError



目前我正在尝试使用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时,我得到了错误。它会调用RecyclerView的scrolltopposition()方法。但是它抱怨找不到这个方法:

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(与测试相同)之后,它仍然有相同的错误。

欢迎指教

好的,经过两天的搜索,我终于找到了解决方案。这和保德卫有关。事实证明,RecyclerView被Android Proguard混淆了。这就是为什么Espresso找不到这种方法的原因。

只需添加

-keep class android.support.v7.widget.RecyclerView { *; }
在proguard-rules

。文本,然后就可以了

最新更新