Kotlin有一个名为all open的编译器插件.它强制所有带有注释的类都是开放的.
我想在我的测试中使用此功能,但我不想在我的生产代码中使用它(我希望我的类关闭).我怎样才能做到这一点?
我尝试过类似的东西:
test {
allOpen {
annotation('com.my.Annotation')
}
}
Run Code Online (Sandbox Code Playgroud)
但代码总是执行.
Str*_*lok 13
这是因为插件应用于build.gradle文件的根目录.
除非设置了一些项目属性,否则100%工作的解决方案是不应用插件.
if (project.hasProperty("allopen")) {
apply plugin: "kotlin-allopen"
allOpen {
annotation('com.my.Annotation')
}
}
Run Code Online (Sandbox Code Playgroud)
并使用属性运行测试:gradle -Pallopen test.
也许一些Gradle大师可以使用更好的解决方案.
我想,你可以这样做:
android.applicationVariants.all { ApplicationVariant variant ->
boolean hasTest = gradle.startParameter.taskNames.find {it.contains("test") || it.contains("Test")} != null
if (hasTest) {
apply plugin: 'kotlin-allopen'
allOpen {
annotation('com.my.Annotation')
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在运行测试时,您不需要传递属性.
| 归档时间: |
|
| 查看次数: |
1391 次 |
| 最近记录: |