使用Espresso的Android乐器测试失败:javax.inject.Provider中的NoSuchMethodError get()

时间:2016-03-31 09:01:22

标签: java android kotlin android-espresso

当我运行Android乐器测试时,Espresso类初始化失败,并显示以下stacktrace:

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。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

解决方案是在应用程序的proguard文件中添加以下内容:

switch

否则Proguard会删除-keep class javax.inject.* { *; } 方法。

答案 1 :(得分:0)

我认为您在项目中使用DI。请参阅Donn Felker博客,

http://www.donnfelker.com/android-studio-espresso-2-0-classnotfoundexception/

希望这会对你有所帮助。