如何在Java/Kotlin中将注解处理器生成代码加入测试类路径
解决纯Kotlin模块中kaptTest生成代码无法被测试类访问的问题
针对你遇到的纯Kotlin模块里,kaptTest生成的Dagger组件无法被测试类访问的问题,我之前也碰到过类似情况,给你一个适用于纯Java/Kotlin模块的解决方案:
核心修改:配置测试源码集路径
在你的纯Kotlin模块的build.gradle文件中,添加sourceSets配置,把kaptTest生成代码的目录手动加入到测试源码路径里。因为纯Kotlin/Java模块用的是标准Gradle Java插件的源码集机制,不是Android模块的变体系统,所以之前Android项目里的applicationVariants配置不适用。
具体配置代码如下:
sourceSets { test.java.srcDirs += "$buildDir/generated/source/kapt/test" }
或者更清晰的写法:
sourceSets { test { java { srcDirs += file("$buildDir/generated/source/kapt/test") } } }
后续操作
- 点击Android Studio右上角的Sync Project with Gradle Files按钮,同步Gradle配置
- 执行Clean Project然后Rebuild Project,让Gradle重新生成Dagger的测试组件代码,并将新的源码路径纳入识别范围
额外排查点
- 确认你已经正确添加了
kaptTest "com.google.dagger:dagger-compiler:${dagger_version}"依赖(你已经加了,这一步没问题) - 检查
build/generated/source/kapt/test目录下的包结构,确保生成的DaggerUnitTestComponent所在的包和你的测试类包一致,避免导包错误 - 如果还是有问题,可以尝试删除
build目录后再重新构建,彻底清理缓存
内容的提问来源于stack exchange,提问作者hugonardo
相关产品推荐
相关产品推荐

