Я пытаюсь создать модульный тест на Android, который использует файл mockito-all-1.8.5.jar с mockito.org. Я добавил файл jar в свой проект, используя проект > свойства > путь сборки проекта > добавить внешний jar. Это всегда работало для меня в Java-проектах, отличных от Android.

Однако, когда я запускаю модульный тест, я получаю исключение следующего класса:

Java.lang.ClassNotFoundException: org.mockito.runners.VerboseMockitoJUnitRunner

Над ним следующее сообщение:

Не удается загрузить класс. Убедитесь, что он есть в вашем apk. Имя класса: «org.mockito.runners.VerboseMockitoJUnitRunner». Сообщение: org.mockito.runners.VerboseMockitoJUnitRunner

Я проверил банку, и класс там.

Я также попытался добавить по этой ссылке:

Как использовать и упаковать файл JAR с моим приложением для Android?

Но все равно не повезло. Как я могу найти этот класс?

Изменить: я думаю, что есть проблема с любыми библиотеками, от которых зависит Mockitto - они могут быть несовместимы с Dalvik jvm. Смотрите этот пост:

http://daverog.wordpress.com/2009/12/14/why-android-isnt-ready-for-tdd-and-how-i-tried-anyway/

1) Импортируйте фреймворк (например, mockito) в проект в качестве дополнительной зависимости. Любые импортированные jar-файлы, содержащие файлы классов, не скомпилированные в байт-код Dalvik (большинство), не будут работать. Попытка скомпилировать исходный код вместе с вашим проектом также не сработает, потому что большинство библиотек будут широко использовать части языка Java, несовместимые с Dalvik: он использует свою собственную библиотеку, построенную на подмножестве Java-реализации Apache Harmony.

5
Jack BeNimble 30 Мар 2011 в 07:57
Вы уверены, что у вас есть jUnit в вашем проекте? Учитывая, что он не может загрузить класс VerboseMockito**JUnit**Runner, это может быть из-за этого.
 – 
Spoike
14 Май 2011 в 23:54
Если у вас по-прежнему возникают проблемы, обратитесь к разработчикам mockito напрямую или отправьте отчет об ошибке.
 – 
Spoike
14 Май 2011 в 23:57

1 ответ

Если вы выполняете внутри Dalvik JVM, вы не сможете использовать Mockito.

Однако, если вы запускаете свои модульные тесты на JVM для настольных компьютеров (например, с помощью среды тестирования, такой как Robolectric), тогда вы можете идти. В настоящее время я комбинирую их в своих проектах для Android, и это дает хороший эффект.

0
Robert Taylor 11 Окт 2011 в 11:49
1
Обновление: Mockito можно использовать в наши дни.
 – 
DustinB
21 Янв 2015 в 02:39