使用Espresso的Android仪器测试失败:NoSuchMethodError javax.inject.Provider中的get()
当我运行我的Android仪器测试时,Espresso类初始化失败,出现以下堆栈跟踪:
java.lang.NoSuchMethodError: No interface method get()Ljava/lang/Object; in class Ljavax/inject/Provider; or its super classes (declaration of 'javax.inject.Provider' appears in /data/app/com.myapp.mock.debug-2/base.apk) at android.support.test.espresso.DaggerBaseLayerComponent.idlingResourceRegistry(DaggerBaseLayerComponent.java:101) at android.support.test.espresso.Espresso.<clinit>(Espresso.java:52) ...
我不知道这是否相关,但我的项目使用Kotlin。
任何想法?
解决方法是在应用程序的proguard文件中添加以下内容:
-keep class javax.inject.* { *; }
否则get()
方法将被Proguard删除。
我想你在你的项目中使用DI。 请参阅Donn Felker博客,
http://www.donnfelker.com/android-studio-espresso-2-0-classnotfoundexception/
希望这可以帮助你。