kapt:如何处理测试源?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kapt:如何处理测试源?相关的知识,希望对你有一定的参考价值。
我有一个项目,它使用kapt进行注释处理和代码生成(基于注释)。它适用于主要来源,但不适用于测试来源。
一些消息来源(例如how to use kapt in androidTest scope)建议运行gradle kaptTest
,但这也不起作用。它将任务报告为“最新”,即使在干净之后也是如此。也许这个建议对于android来说是独一无二的。
我从https://github.com/JetBrains/kotlin-examples/tree/master/gradle/kotlin-code-generation下载了示例项目,在测试源中添加了注释用法,我在那里得到了相同的行为。它适用于主要来源,并不适用于测试源。
输出中唯一奇怪的事情是:
> Task :example:compileKotlin
Using kotlin incremental compilation
w: [kapt] Sources output directory is not specified, skipping annotation processing
但正如您所看到的,这不是测试源,而是主要来源和注释处理器应用于那些。
我在注释处理器中添加了一个打印输出。它确实显示为compileKotlin,但不适用于compileTestKotlin。
那么,让kapt在测试源上工作的神奇技巧是什么?
PS:我想有人会要求我的build.gradle。它与我链接的示例中的相同,因此如果您可以使其适用于示例,我可以集成到我的构建文件中。
PPS:我发现的类似问题是Kotlin's kapt plugin for gradle does not work for custom source set (JMH),他们建议发布错误报告。也许这是kapt-gradle-plugin中的一个错误?
一些来源(例如如何在androidTest范围内使用kapt)建议运行gradle kaptTest,但这也不起作用。
你误解了这个建议。它说kaptTest
应该用来代替kapt
区块中的dependencies
,如here所述,并不是说你应该以不同的方式运行Gradle。 OTOH,文档也特别说
请注意,kaptAndroidTest和kaptTest扩展了kapt,因此您只需提供kapt依赖项,它就可用于生产源和测试。
所以确实有一个错误。
我在https://youtrack.jetbrains.com/issue/KT-21891中将这个问题联系起来。我不想提交单独的bug,因为我不知道哪个Gradle / Kotlin / Kotlin Gradle插件/等。你有过。
以上是关于kapt:如何处理测试源?的主要内容,如果未能解决你的问题,请参考以下文章