Библиотека/платформа Mocking, которая работает лучше всего в Android?

Я разрабатываю приложение Android, пользующееся сторонними библиотеками (Twitter4j). Я хочу смочь насмешка те объекты (также объекты, созданные мной) в JUnit и функциональных испытаниях.

У Вас есть какие-либо хорошие события при пользовании некоторыми библиотеками насмешки, и можно ли рекомендовать им?

35
задан Ollie C 25 March 2012 в 11:26
поделиться

2 ответа

(Обновление: Mockito добавил поддержку Android начиная с версии 1.9.5, а EasyMock добавил поддержку Android начиная с версии 3.2, выделив те биты, которые генерируют код во время выполнения, и сделав их подключаемыми, например используя dexmaker вместо cglib.)

За исключением android-mock , упомянутого DixonD (это довольно молодая, недоказанная библиотека), в настоящее время нет решения. Вы можете сразу забыть все, что основано на CGLib ( Mockito , plain EasyMock ), поскольку CGLib полагается на генерацию байтового кода и не будет работать на Dalvik (он также полагается на пакет Java Beans. , который также не входит в состав Android).

Как бы то ни было, вы могли бы использовать очень немногие имитационные классы, поставляемые с Android (например, MockContext ), но они не проверяют поведение, они просто заглушки.Их поведение по умолчанию - генерировать ошибку времени выполнения в каждом методе, поэтому вам нужно создать подклассы и переопределить методы, которые вы хотите имитировать.

Однако вы по-прежнему можете использовать имитирующие библиотеки в тестах, не связанных с инструментарием, то есть в ваших стандартных модульных тестах, выполняемых на JVM. Вы можете использовать PowerMock для имитации методов фреймворка, он поддерживает имитацию статических методов и конструкторов, что делает имитирование столь же мощным, как, например, в Ruby (просто больнее пользоваться).

Мы используем JUnit 4 + PowerMock + Mockito и имитируем классы, такие как Context и TextUtils, в базовом классе, от которого мы наследуем каждый нормальный тест JUnit. Для инструментальных тестов мы создаем настраиваемые имитационные классы и решаем с помощью фабрики, какую реализацию (фиктивную или нет) создать во время выполнения.

37
ответ дан 27 November 2019 в 07:16
поделиться

Android Mock написан поверх EasyMock 2.4 , который является хорошо известным фреймворком для Java

1
ответ дан 27 November 2019 в 07:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: