У меня есть Проект чистой архитектуры Android пишут в Котлине 3 модуля:
Каждый из 3 модулей имеет модульные тесты, написанные с помощью junit. Но с Kotlin каждый класс по умолчанию является окончательным. У меня быстро возникла проблема: Как высмеять окончательный класс с mockito
Теперь можно использовать Mockito 2
Это можно сделать с помощью механизма расширения mockito, создав файл /mockito-extensions/org.mockito.plugins.MockMaker
, содержащий одну строку:
mock-maker-inline
Это решение очень хорошо работает на модуле данных (Android Library) и презентационный модуль (приложение для Android) , но не работает на моем domaine module (библиотека Java).
Я знаю, что этот вопрос уже задан (Как издеваться над последним классом с mockito, Макет объектов, вызывающих окончательный классы статические методы с Mockito), но я не нашел ответ, который я ищу.
По умолчанию вы можете использовать встроенный метод издевательства, изменив зависимость Gradle от обычной зависимости Mockito:
compile "org.mockito:mockito-core:$mockito_version"
... к следующему:
compile "org.mockito:mockito-inline:$mockito_version"
Таким образом, вам не придется полагаться на активацию встроенного издевательства над методом "файл в папке с ресурсами", который иногда я обнаружил, что иногда он сломанный.
Mockito MockMaker может использоваться только для модульных тестов (запускается на JVM). Для тех, кто испытывает проблемы с издевательскими классами Kotlin в инструментальных тестах (androidTest), попробуйте использовать библиотеку DexOpener. Это делает классы, свойства и методы Kotlin open
, что позволяет их насмехаться.
mock-maker-inline
, и он все еще дает вам ошибку по поводу насмешки над финальными классами?