Какова философия Kotlin двойных испытаний?

Какова философия Kotlin двойных испытаний? Поскольку все классы и функции по умолчанию закрыты (не открыты), фальшивые фреймворки, такие как Mockito, явно не первоклассные граждане.

Много уже было написано о проблеме, а также о возможных решениях, но что думают дизайнеры Kotlin для тестирования с двойными числами? Это фальшивки и окурки, или вы должны сыграть своих собственных шпионов и издевательств?

3 ответа

Решение

Такие фреймворки, как Mockito, являются гражданами первого сорта, в том числе и до такой степени, что они прямо упоминаются как одна из all-open плагин компилятора выпущен в Kotlin 1.0.6. Ваши ссылки на проблемы / решения устарели, и было бы неплохо, если бы эти авторы обновили свои посты.

Из этого анонса релиза вы увидите, что Mockito вызван специально:

Плагин полностью открытого компилятора позволяет аннотировать классы определенной аннотацией, а их члены открывать без явного ключевого слова open, поэтому становится намного проще использовать фреймворки / библиотеки, такие как Spring AOP или Mockito. Подробную информацию об all-open вы можете прочитать в соответствующем разделе.

Мы предоставляем полностью открытую поддержку плагинов для Gradle и Maven, а также интеграцию IDE.

Плагин доступен для использования с использованием компилятора командной строки, компилятора IDE, а также от Gradle и Maven.

Другие ссылки:

Большая часть дизайна Kotlin - это "Эффективная Java" Джошуа Блоха, то есть "закрытая по умолчанию", "неизменность" и т. Д.

Следовательно, эти проблемы существуют и в Java. Решением этих проблем было и остается использование интерфейсов, где это возможно, чтобы вы могли предоставить тестовые дубликаты или любую другую реализацию вашего производственного кода в этом отношении.

Для тестов это могут быть издевательства, фальшивки, окурки, или что там у вас. Имейте в виду, что хорошо написанный репозиторий в памяти, например, гораздо проще обрабатывать в тестах, чем настраивать макет для этого класса.

В дополнение к комментариям @nhaarman, другим вариантом является Mockito-Kotlin. Мне нравится, что классы Котлина являются окончательными по умолчанию, поэтому all-open плагин компилятора не является хорошим вариантом для меня.

Другие вопросы по тегам