Моки Mockito запускают реальный код Android в Lollipop или выше

Итак, у меня есть класс базы данных, у которого есть зависимость, расширяющая SQLOpenHelper, и я тестирую с помощью инструментальных тестов Android и Mockito для имитации зависимостей. Мы замечаем, что Mockito на самом деле не издевается над реализациями при выполнении Mockito.mock(class), вместо этого выполняется фактический код и выдает исключения с нулевым указателем, как мы и ожидали. На устройствах с API 19 тесты выполняются должным образом, и макеты работают правильно.

У кого-нибудь есть предложения или что-то попробовать? Я пробовал реальные устройства и эмуляторы с аналогичными результатами. Может ли это быть проблема с Mockito или с dex-maker? Я не нашел никакой информации при поиске.

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

androidTestCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'

Примечание: это также есть в библиотечном модуле, если это имеет значение.


person Stampede10343    schedule 06.01.2017    source источник
comment
Пожалуйста, добавьте пример кода ваших тестов. Кроме того, я предполагаю, что вы говорите об InstrumentedUnitTests (androidTest), верно?   -  person David Rawson    schedule 06.01.2017
comment
Это правильно. Я получу образец кода. Но независимо от того, что я пытаюсь имитировать, Mockito создает экземпляр, но выполняет фактический код, но только на ›= API21 и только для этого проекта другие приложения Mockito, похоже, работают нормально.   -  person Stampede10343    schedule 07.01.2017
comment
Возможно, поможет MCVE   -  person David Rawson    schedule 07.01.2017
comment
Чтобы уточнить, пробовали ли вы выполнить действия, указанные в этом вопросе?   -  person David Rawson    schedule 07.01.2017
comment
Я попробовал это решение, и это не дало результата. Я собираюсь работать над MCVE вместе   -  person Stampede10343    schedule 10.01.2017
comment
@DavidRawson В настоящее время я не могу воспроизвести это в простом новом проекте. Вроде только в нашем приложении. Я попытался настроить его так, как было, с библиотечным модулем и инструментальными тестами, и Mockito работает, как ожидалось. Что-то мне не хватает в этой конфигурации проекта, но я ничего не пытаюсь сделать.   -  person Stampede10343    schedule 11.01.2017
comment
Голосующим следует пояснить, испытывают ли они ту же проблему.   -  person David Rawson    schedule 11.01.2017
comment
Также, возможно, вы можете добавить свой build.gradle   -  person David Rawson    schedule 11.01.2017


Ответы (1)


Итак, избавляемся от наших старых зависимостей Mockito и dexmaker и используем новый: Mockito-android

Исправлены наши проблемы

person Stampede10343    schedule 12.01.2017