2015-10-16 101 views
2

当前我正在尝试使用RecyclerView测试视图。该应用程序的伟大工程,但在测试中,它没有,它找不到RecyclerView的方法,以下内容是在测试文件在Espresso测试中使用RecyclerView的NoSuchMethodError

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

感激任何意见

回答

3

好吧,搜索后两天,终于让我找到了解决办法。这与Proguard有关。事实证明,RecyclerView被Android Proguard混淆了。这就是Espresso无法找到这种方法的原因。

只需简单地在proguard的-rules.text添加

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

,然后你所有的设置。

相关问题