Testing 无法从Gradle中的替代测试源集访问Kotlin内部成员
下面我们将尝试将集成测试与普通单元测试分开 我们的问题是Kotlin中的Testing 无法从Gradle中的替代测试源集访问Kotlin内部成员,testing,gradle,kotlin,integration-testing,visibility,Testing,Gradle,Kotlin,Integration Testing,Visibility,下面我们将尝试将集成测试与普通单元测试分开 我们的问题是Kotlin中的内部成员无法通过此类测试访问。根据,测试源集存在可见性异常 “内部可见性”修改器表示成员可见 在同一模块内。更具体地说,模块是一组Kotlin 一起编译的文件: 智能思维模块 Maven项目 Gradle源集(测试源集可以访问main的内部声明除外) 通过一次Ant任务调用编译的一组文件 除了不尝试访问它们之外,还有其他解决方法吗?这将需要对数百个测试进行重大重构,并可能对整个代码库进行重构。通过将以下代码添加到我的自定义G
内部成员无法通过此类测试访问。根据,测试源集存在可见性异常
“内部可见性”修改器表示成员可见
在同一模块内。更具体地说,模块是一组Kotlin
一起编译的文件:
智能思维模块李>
Maven项目李>
Gradle源集(测试源集可以访问main的内部声明除外)李>
通过一次Ant任务调用编译的一组文件
除了不尝试访问它们之外,还有其他解决方法吗?这将需要对数百个测试进行重大重构,并可能对整个代码库进行重构。通过将以下代码添加到我的自定义Gradle插件中,我能够获得一个自定义测试源集来访问内部
类
NamedDomainObjectContainer<KotlinWithJavaCompilation<KotlinJvmOptions>> compilations = project
.getExtensions()
.getByType(KotlinJvmProjectExtension.class)
.target.getCompilations();
compilations.getByName(sourceSet.getName())
.associateWith(compilations.getByName(SourceSet.MAIN_SOURCE_SET_NAME));
NamedDomainObjectContainer编译=项目
.getExtensions()
.getByType(KotlinJvmProjectExtension.class)
.target.getCompilations();
编译.getByName(sourceSet.getName())
.associateWith(compilations.getByName(SourceSet.MAIN_SOURCE_SET_NAME));
我查看了kotlin gradle插件的源代码,发现如下内容:
通过更改,自定义源集中的测试运行良好,但IntellIJ仍显示编译错误。我将进一步查看是否可以使IntelliJ高兴这是一个有用的指针,但我无法在Groovy DSL中将其转换为任何内容(尽管我也在尝试混合使用MPP):kotlin{…targets.jvm.compilations.test.associateWith targets.jvm.compilations.main}
。似乎associateWith
未向用户公开。在MPP中,我认为您需要添加对compileMain
kotlin源集的依赖项。有多个对compileMain
和compileTest
源代码集的引用。例如,这个答案谈到了让想法快乐:这讨论了一些失败的尝试。你有没有找到解决问题的办法?