Какова философия 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
плагин компилятора не является хорошим вариантом для меня.