Kotlin: Сделать внутреннюю функцию видимой для модульных тестов

Если тесты находятся в другом модуле, чем производственный код (что является общим), какой лучший способ сделать внутренние функции видимыми для тестов?

В Java у меня будет производственный код и тест в том же пакете и сделайте проверяемые методы package-private (плюс добавьте аннотацию @VisibleForTest, если это единственная причина, частный, а не частный тест). К сожалению, у Kotlin нет концепции private-package.

Ответ 1

Классы и методы, помеченные с помощью модификатора доступа internal, будут работать из текущих версий Kotlin, Gradle, а также Intellij для доступа к этим методам из тестовых классов. Инструменты рассматривают основные и тестовые исходные пути как часть одного и того же модуля.

Вы уже пробовали это? И если это не удалось, вы должны сообщить об ошибке, поскольку это уже было сообщено, исправлено и должно быть в порядке в любой текущей версии.

Ответ 2

Наверное, самым простым решением является размещение ваших модульных тестов в зависимости от внутреннего кода в том же модуле с производственным кодом и оставление только интеграционных тестов, которые используют открытый API, в отдельном модуле.

Это кажется разумным, так как модификатор internal означает точно видимость внутри того же модуля.