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

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

25
Jan Pomikálek 28 Фев 2016 в 17:52

2 ответа

Лучший ответ

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

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

23
Jayson Minard 29 Фев 2016 в 00:08

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

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

7
hotkey 28 Фев 2016 в 19:29