从1.0.2 – 1.0.3升级Kotlin:java.lang.NoSuchMethodError:没有虚方法provideInjectedData $ app_compileDebugKotlin()

我有一个Kotlin咖啡Dagger2小项目。 当我使用Kotlin 1.0.2时效果很好。 迁移到Kotlin 1.0.3后,运行Espresso Instrumental测试(在MainActivityTest上)时,出现上述错误。

我的Dagger2 TestModule如下

@Module open class ApplicationTestModule(protected val mApplication: Application) { @Provides internal fun provideApplication(): Application { return mApplication } @Provides @Singleton internal fun provideInjectedData(): InjectedData { return mock(InjectedData::class.java) } } 

为InjectedData生成的ApplicationTestModule的dagger2如下

 package com.elyeproj.kotlinespressomock; import dagger.internal.Factory; import dagger.internal.Preconditions; import javax.annotation.Generated; @Generated( value = "dagger.internal.codegen.ComponentProcessor", comments = "https://google.github.io/dagger" ) public final class ApplicationTestModule_ProvideInjectedData$app_compileDebugKotlinFactory implements Factory<InjectedData> { private final ApplicationTestModule module; public ApplicationTestModule_ProvideInjectedData$app_compileDebugKotlinFactory( ApplicationTestModule module) { assert module != null; this.module = module; } @Override public InjectedData get() { return Preconditions.checkNotNull( module.provideInjectedData$app_compileDebugKotlin(), "Cannot return null from a non-@Nullable @Provides method"); } public static Factory<InjectedData> create(ApplicationTestModule module) { return new ApplicationTestModule_ProvideInjectedData$app_compileDebugKotlinFactory(module); } } 

如果提供provideInjectedData$app_compileDebugKotlin()无法通过AndroidStudio解决。 测试运行失败。

我在使用Kotlin 1.0.2(1.0.1-2)的时候反驳,上面的函数也存在也不能通过AndroidStudio解析。 但是测试仍然运行。

这是一个Kotlin或Dagger的问题? 我怎么解决这个问题?

要复制问题,可以在https://github.com/elye/kotlinespressomock找到代码。 只需将ext.KOTLIN_VERSION = '1.0.1-2'更改为ext.KOTLIN_VERSION = '1.0.3' ,然后在ext.KOTLIN_VERSION = '1.0.3'运行MainActivityTest