Kou*_*lik 5 testing integration-testing visibility gradle kotlin
遵循https://docs.gradle.org/current/userguide/java_testing.html#sec:configuring_java_integration_tests和https://www.michael-bull.com/blog/2016/06/04/separating-integration-and-unit -tests-with-gradle,我们尝试将集成测试与普通单元测试分开。
我们internal遇到的问题是,此类测试无法访问Kotlin的成员。根据Kotlin doco,测试源集存在可见性例外。
内部可见性修饰符意味着该成员在同一模块中可见。更具体地说,模块是一起编译的一组Kotlin文件:
- IntelliJ IDEA模块;
- 一个Maven项目;
- Gradle源集(测试源集可以访问main的内部声明除外);
- 通过调用Ant任务编译的一组文件。
除了不尝试访问它们之外,还有其他解决方法吗?这将需要对数百个测试进行重大重构,并有可能对整个代码库进行重构。
internal通过将以下代码添加到我的自定义 Gradle 插件中,我能够获得自定义测试源集来访问类。
NamedDomainObjectContainer<KotlinWithJavaCompilation<KotlinJvmOptions>> compilations = project
.getExtensions()
.getByType(KotlinJvmProjectExtension.class)
.target.getCompilations();
compilations.getByName(sourceSet.getName())
.associateWith(compilations.getByName(SourceSet.MAIN_SOURCE_SET_NAME));
Run Code Online (Sandbox Code Playgroud)
我查看了kotlin-gradle-plugin源代码,发现以下内容:
https://github.com/JetBrains/kotlin/blob/v1.3.61/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin /gradle/plugin/KotlinPlugin.kt#L488-L490
经过更改,我的自定义源集中的测试运行得很好,但 IntellIJ 仍然显示编译错误。我会进一步看看我是否也能让 IntelliJ 满意
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |