Я пишу проект библиотеки Android на основе класса Android Bitmap (назовите его AndroindLib), который содержит только служебный класс (без активности). Я попытался протестировать его с помощью Android JUnit, но он продолжает жаловаться, что не может найти AnroidLib.apk
Как правильно тестировать проект библиотеки Android?
Ответы:
Цитата из документации :
"Есть два рекомендуемых способа настройки тестирования кода и ресурсов в библиотечном проекте:
Вы можете настроить тестовый проект, который будет использовать проект приложения, зависящий от проекта библиотеки. Затем вы можете добавить в проект тесты для функций, специфичных для библиотеки.
Вы можете настроить стандартный проект приложения, зависящий от библиотеки, и поместить инструменты в этот проект. Это позволяет вам создать автономный проект, содержащий как тесты / инструменты, так и код для тестирования ».
источник
В вашем тестовом проекте просто измените имя пакета, чтобы оно было таким же, как у пакета вашей библиотеки. Например, у вас есть библиотека с пакетом
"com.example.lib"
. Создайте тестовый проект, ориентированный на вашу библиотеку. В файле манифеста вы увидитеpackage="com.example.lib.test"
, иtargetPackage="com.example.lib"
. Просто измените пакет с com.example.lib.test на com.example.lib (targetPackage
оставьте как есть).Кроме того, убедитесь, что библиотека ссылается на ваш тестовый проект НЕ в пути сборки Java, а как обычную библиотеку Android: в Eclipse она должна отображаться как библиотека на
Project->Properties->Android
вкладке, но не наProject->Properties->Java Build Path
вкладке.Затем запустите тесты.
источник
http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/ помогает описать процесс, необходимый для реализации второго предложения в ответе CommonsWare
источник
Согласно документации :
Тестирование библиотечного модуля аналогично тестированию приложения. Основное отличие состоит в том, что библиотека и ее зависимости автоматически включаются как зависимости тестового APK. Это означает, что тестовый APK включает в себя не только собственный код, но также AAR библиотеки и все ее зависимости. Поскольку отдельного «тестируемого приложения» не существует, задача androidTest устанавливает (и удаляет) только тестовый APK. При объединении нескольких файлов манифеста Gradle следует порядку приоритетов по умолчанию и объединяет манифест библиотеки с основным манифестом тестового APK.
источник
ПРИМЕЧАНИЕ. Это решение основано на использовании Eclipse Indigo (3.8.2) и может быть реализовано несколько иначе для другой среды IDE, хотя основные принципы останутся такими же.
У меня были похожие проблемы, и я обнаружил, что всегда работает следующее:
( ПРИМЕЧАНИЕ. Эти инструкции предназначены для создания новой группы проектов с нуля. Если вы уже создали части группы проектов, возможно, вам придется изменить свои проекты, чтобы они соединялись таким же образом. )
У вас должно получиться три проекта (Android Library, Android Test App, Android Library Tester), которые выглядят примерно так:
У вас должен получиться класс для тестирования вашей библиотеки Android, который выглядит примерно так:
Затем вы можете добавить любой тест, который хотите. Вам не нужно будет ссылаться на приложение Android Test («RemingtonAndroidToolsTestApp» в этом примере) для дальнейшего запуска тестов, если только они не требуют доступа к конкретному компоненту Android (например, к папке Assets). Если вам нужен доступ к каким-либо компонентам, специфичным для Android, вы можете сделать это, изменив приложение Android Test (в данном примере «RemingtonAndroidToolsTestApp»), а затем сославшись на него с помощью инструментов, предоставляемых стандартным Android Junit API. (Подробнее об этом можно прочитать здесь: http://developer.android.com/tools/testing/testing_android.html )
источник
Если ваши классы ulitiy не зависят от какого-либо кода, специфичного для Android, вы можете просто использовать стандартные модульные тесты JUnit. Нет необходимости использовать версии Android.
источник