Как смоделировать финальный класс с Mockito 2 на модуле Java в проекте Android?

1

У меня есть Проект чистой архитектуры Android пишут в Котлине 3 модуля:

  • данные (Android-библиотека)
  • domaine (библиотека Java)
  • презентация (приложение для Android)

Каждый из 3 модулей имеет модульные тесты, написанные с помощью junit. Но с Kotlin каждый класс по умолчанию является окончательным. У меня быстро возникла проблема: Как высмеять окончательный класс с mockito

Теперь можно использовать Mockito 2

Это можно сделать с помощью механизма расширения mockito, создав файл /mockito-extensions/org.mockito.plugins.MockMaker, содержащий одну строку:

mock-maker-inline

Это решение очень хорошо работает на модуле данных (Android Library) и презентационный модуль (приложение для Android) , но не работает на моем domaine module (библиотека Java).

Я знаю, что этот вопрос уже задан (Как издеваться над последним классом с mockito, Макет объектов, вызывающих окончательный классы статические методы с Mockito), но я не нашел ответ, который я ищу.

  • 0
    Что вы имеете в виду, что он не работает в этом модуле? У вас есть файл для mock-maker-inline , и он все еще дает вам ошибку по поводу насмешки над финальными классами?
  • 0
    @zsmb13 zsmb13 да у меня следующая ошибка: «Мокито не может издеваться / шпионить, потому что: последний класс»
Теги:
kotlin
junit
mockito

2 ответа

14
Лучший ответ

По умолчанию вы можете использовать встроенный метод издевательства, изменив зависимость Gradle от обычной зависимости Mockito:

compile "org.mockito:mockito-core:$mockito_version"

... к следующему:

compile "org.mockito:mockito-inline:$mockito_version"

Таким образом, вам не придется полагаться на активацию встроенного издевательства над методом "файл в папке с ресурсами", который иногда я обнаружил, что иногда он сломанный.

  • 0
    мой спаситель : DD
0

Mockito MockMaker может использоваться только для модульных тестов (запускается на JVM). Для тех, кто испытывает проблемы с издевательскими классами Kotlin в инструментальных тестах (androidTest), попробуйте использовать библиотеку DexOpener. Это делает классы, свойства и методы Kotlin open, что позволяет их насмехаться.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню