9

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

我应该使用androidTestAnnotationProcessor吗?(以前不是这样的)

编辑:要使用匕首 2.6,需要添加classpath 'com.google.guava:guava:19.0'

更新: a 有问题Module,因此Component无法创建。但是,使用千斤顶(即使有调试选项),我看不到问题。现在,恢复到 java 7,gradle 插件 2.1.2。这样,无需指定哪个 guava 版本,并且可以使用所有最新的库(dagger 2.6、butterknife 8.2.1、apt 1.8)

4

2 回答 2

19

我在使用 Dagger 2.9 时遇到了同样的问题。compileDebugAndroidTestSources已成功完成Dagger*Component,但未生成。

在挣扎了大约一个小时后,我找到了这个问题,最后通过一些实验找到了解决方案:

添加

androidTestAnnotationProcessor 'com.google.dagger:dagger-compiler:2.9'

compileDebugAndroidTestSources再次执行。现在应该生成源(您可能必须临时注释掉对您Dagger*Component的引用才能编译成功),如果您的图表是好的。

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

<rant>

我曾经很喜欢 Dagger,但它时不时会出现一些奇怪的问题,这使其成为长期商业项目的巨大风险。此外,他们仍然没有像样的文档,这使得新开发人员很难学习它。可能这不仅仅是 Dagger 的错,可能 gradle 和 Android Studio 也有问题,但我正在认真考虑转储它。

</rant>

于 2017-02-06T15:44:42.467 回答
0

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

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

在此处输入图像描述

于 2020-02-22T12:18:06.150 回答