У меня есть Kotlin проект, который использует Gradle для сборки / тестирования. В Kotlin вы можете пометить зависимости как internal
, например:
internal class MyClass : MyInterface
Теперь я также хочу запустить некоторые интеграционные тесты отдельно от обычной задачи test
в Gradle, поэтому я изменил свой build.gradle следующим образом:
sourceSets {
testIntegration {
compileClasspath = files(main.output, project.configurations.testCompileClasspath)
runtimeClasspath = files(testIntegration.output, main.output, project.configurations.testRuntimeClasspath)
}
}
task testIntegration(type: Test) {
group = "Verification"
description = "Integration tests"
testClassesDirs = sourceSets.testIntegration.output.classesDirs
classpath = sourceSets.testIntegration.runtimeClasspath
useTestNG()
}
Работает нормально, за исключением случаев, когда я хочу получить доступ к внутренней декларации:
// In my integration tests
val instance = factory.buildInstance()
assertTrue(instance is MyClass) // Compilation fails in this line because `MyClass` is internal
Пройдя через Kotlin документация в нем упоминается:
набор источников Gradle ( за исключением того, что набор тестовых источников может обращаться к внутренним объявлениям main);
Как мне сообщить Gradle, что новый набор исходных кодов testIntegration
должен также иметь доступ к объявлениям internal
из набора исходных кодов main
?