Kotlin: Сделать внутреннюю функцию видимой для модульных тестов
Если тесты находятся в другом модуле, чем производственный код (что является общим), какой лучший способ сделать внутренние функции видимыми для тестов?
В Java у меня будет производственный код и тест в том же пакете и сделайте проверяемые методы package-private (плюс добавьте аннотацию @VisibleForTest
, если это единственная причина, частный, а не частный тест). К сожалению, у Kotlin нет концепции private-package.
Ответы
Ответ 1
Классы и методы, помеченные с помощью модификатора доступа internal
, будут работать из текущих версий Kotlin, Gradle, а также Intellij для доступа к этим методам из тестовых классов. Инструменты рассматривают основные и тестовые исходные пути как часть одного и того же модуля.
Вы уже пробовали это? И если это не удалось, вы должны сообщить об ошибке, поскольку это уже было сообщено, исправлено и должно быть в порядке в любой текущей версии.
Ответ 2
Наверное, самым простым решением является размещение ваших модульных тестов в зависимости от внутреннего кода в том же модуле с производственным кодом и оставление только интеграционных тестов, которые используют открытый API, в отдельном модуле.
Это кажется разумным, так как модификатор internal
означает точно видимость внутри того же модуля.