Android 使用 Espresso 的仪器测试失败:javax.inject.Provider 中的 NoSuchMethodError get()
Android instrument test with Espresso fails: NoSuchMethodError get() in javax.inject.Provider
当我 运行 我的 Android 仪器测试时,Espresso class 初始化失败,堆栈跟踪如下:
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。
有什么想法吗?
我认为您在项目中使用了 DI。参考 Donn Felker 博客,
http://www.donnfelker.com/android-studio-espresso-2-0-classnotfoundexception/
希望对您有所帮助。
解决方法是在应用的proguard文件中添加如下内容:
-keep class javax.inject.* { *; }
否则 get()
方法将被 Proguard 移除。
当我 运行 我的 Android 仪器测试时,Espresso class 初始化失败,堆栈跟踪如下:
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。
有什么想法吗?
我认为您在项目中使用了 DI。参考 Donn Felker 博客,
http://www.donnfelker.com/android-studio-espresso-2-0-classnotfoundexception/
希望对您有所帮助。
解决方法是在应用的proguard文件中添加如下内容:
-keep class javax.inject.* { *; }
否则 get()
方法将被 Proguard 移除。