2011-05-19 3 views
2

Я долгое время разработчик Java с многолетним опытом Java EE, Ant, Maven, модульное тестирование, mocks и т. Д. В настоящее время я использую gradle для создания приложений для Android и смотрю на модульное тестирование их. И это заставило меня вырвать мои волосы!Попытка понять андроид-тестирование

Мое чтение указывает, что для проверки приложения мне нужно создать в нем другое приложение в тестовом каталоге. Но я не уверен, как это встроенное приложение может видеть основные классы приложений. Я предполагаю, что Google придумал это из-за того, что что-то связано с манифестом, которые отличаются. Я не знаю, почему.

Без выполнения этой встроенной системы приложений я смог получить модульные тесты для запуска, включая тестовые классы с основными классами в APK, добавив объявления манифеста в манифест, развернув их и запустив тестовые ролики , Но я не хочу компилировать тестовые классы с классами приложений и включать все зависимости, поэтому это не вариант, и я не уверен в эффектах изменений в манифесте, так как не могу найти никакой документации об эффектах ,

Ничего из этого не понимает градация, которая следует за системой здания maven. Также обратите внимание, что, по-видимому, путь к андроиду заключается в том, что встроенный подпроект (тест) зависит от основного родительского проекта, что полностью противоречит градиенту и maven.

Другой вариант, кажется, отдельный тестовый проект, так что он полностью находится вне проекта приложения. Но на самом деле, я бы хотел использовать аналогичное соглашение для maven и просто иметь тесты в отдельном каталоге вместе с манифестом в тестовых ресурсах.

Неужели кому-нибудь удалось пройти тестирование на эмуляторах, выполняющих модульные тесты, следуя более структуре структуры maven?

ответ

1

Вам нужно запустить модульные тесты в эмуляторе? Разве это не слишком медленно? Я использовал robolectric (http://pivotal.github.com/robolectric/), который создает теневые объекты, которые похожи на mocks. Я использую progaurd (http://proguard.sourceforge.net/), чтобы снять тесты для сборки релиза.

+0

Я быстро посмотрел на робототехнику, но я предпочитаю проводить тесты как можно ближе к устройству. Частично, поскольку те тесты, которые мне интересны, - это тесты inetegration/functional/BDD. Единицы Я могу работать как чистый JUnits. – drekka

2

Вы можете попробовать Robotium. Он предоставляет множество функций для лучшего теста. Вы можете посмотреть на него here.

Смежные вопросы