注释处理器+;androidTest+;匕首2

注释处理器+;androidTest+;匕首2,android,android-gradle-plugin,dagger-2,android-instrumentation,annotation-processor,Android,Android Gradle Plugin,Dagger 2,Android Instrumentation,Annotation Processor,对于插入指令的测试,我有一个TestApplication,它创建了一个TestComponent,但不再生成文件(错误:/xxx/TestApplication.java:16:import.xxx.DaggerTestApplicationComponent无法解析)。我无法确定根本原因。我尝试过不同的Android Studio(2.2、2.1.2)、不同的gradle插件(2.2.0-alpha6、5、4)和不同版本的dagger(2.2到2.6) 我是否应该使用androidTestA

对于插入指令的测试,我有一个
TestApplication
,它创建了一个
TestComponent
,但不再生成文件(
错误:/xxx/TestApplication.java:16:import.xxx.DaggerTestApplicationComponent无法解析
)。我无法确定根本原因。我尝试过不同的Android Studio(2.2、2.1.2)、不同的gradle插件(2.2.0-alpha6、5、4)和不同版本的dagger(2.2到2.6)

我是否应该使用
androidTestAnnotationProcessor
?(以前并非如此)

编辑:要使用Dagger2.6,需要添加
classpath'com.google.guava:guava:19.0'


更新:模块出现问题,因此无法创建组件。但是,使用jack(即使有调试选项),我看不出问题所在。现在,回到Java7,gradle插件2.1.2。这样,就无需指定可以使用哪种番石榴版本和所有最新的LIB(dagger 2.6、butterknife 8.2.1、apt 1.8)

我对dagger 2.9也有同样的问题<代码>CompiledBugAndRoidTestSources
已成功完成,但未生成
Dagger*组件

经过大约一个小时的努力,我终于找到了这个问题,并通过一些实验找到了解决方案:

androidTestAnnotationProcessor'com.google.dagger:dagger编译器:2.9'

然后再次执行
compiledBugandroidTestSources
。现在,如果图形正常,应该生成源代码(您可能需要临时注释掉对
Dagger*组件的引用,以便编译成功)

如果您的图形出现问题(例如缺少@Provides),现在您将得到一个错误(与之前没有
androidTestAnnotationProcessor
的状态相反,在该状态下,任务完成时没有错误,但未生成源)

我过去很喜欢Dagger,但它不时会出现一些奇怪的问题,这使得它成为长期商业项目的一大风险。此外,他们仍然没有合适的文档,这使得新开发人员很难学习它。也许这不仅仅是Dagger的错,也许gradle和Android Studio也有他们的问题,但我正在认真考虑放弃它


除了@Ognyan的答案之外,请记住,
DaggerTestApplicationComponent
在构建测试之前不会生成

要构建测试,请打开ActivityTest.kt,右键单击公共类ActivityTest并选择
Run->ActivityTest.kt


您是否尝试在命令行中生成它?dagger和测试文件生成曾经有一个问题,不确定是否仍然是这样,我还没有。。。但我怀疑它是在启用Jackson之后开始的,如果执行build,它将无法工作。任务生成是否调用CompiledBugandroidTestSources?