Сделать внутренние объявления видимыми для других модулей в Kotlin - PullRequest
0 голосов
/ 25 марта 2020

У меня есть 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...