ПРИМЕЧАНИЕ. Это решение основано на использовании Eclipse Indigo (3.8.2) и может быть реализовано несколько иначе для другой среды IDE, хотя основные принципы останутся такими же.
У меня были похожие проблемы, и я обнаружил, что всегда работает следующее:
( ПРИМЕЧАНИЕ. Эти инструкции предназначены для создания новой группы проектов с нуля. Если вы уже создали части группы проектов, возможно, вам придется изменить свои проекты, чтобы они соединялись таким же образом. )
- Создайте новый проект библиотеки Android, установив флажок «Is Library» во время создания. (например, проект Android под названием «RemingtonAndroidTools»).
- Создайте проект библиотеки Android и убедитесь, что он создал файл jar в папке bin. (например, файл jar с именем «RemingtonAndroidTools.jar».)
- Создайте пустой проект Android для тестирования приложения Android, которое будет служить тестовым приложением Android. (Например, проект Android под названием «RemingtonAndroidToolsTestApp»). Вам не нужно будет изменять исходный код или ресурсы проекта Android Test App, если у вас нет чего-то, что нужно добавить для тестирования. Многие вещи можно протестировать без каких-либо изменений в проекте Android Test App. Проект Android Test App - это мост между вашим проектом Android Library и проектом Android Junit, который делает возможным тестирование проекта Android Library через Android Junit.
- Перейдите на вкладку «Библиотека» пути сборки Java для проекта Android Test App (в данном примере «RemingtonAndroidToolsTestApp»).
- Добавьте файл jar (в этом примере «RemingtonAndroidTools.jar») проекта библиотеки Android (в данном примере «RemingtonAndroidTools») с помощью кнопки «Добавить банки ...».
- Создайте новый проект Android Test (например, «RemingtonAndroidToolsTester»), который будет выступать в качестве тестера библиотеки Android, и выберите проект приложения Android Test (в данном примере «RemingtonAndroidToolsTestApp») в качестве цели.
- Перейдите на вкладку «Библиотека» в пути сборки Java для проекта Android Library Tester (в данном примере - «RemingtonAndroidToolsTester»).
- Добавьте файл jar (в этом примере «RemingtonAndroidTools.jar») проекта библиотеки Android (в данном примере «RemingtonAndroidTools») с помощью кнопки «Добавить банки ...».
- Найдите последнюю папку вашего пакета Android в проекте Android Library Tester (например, «danny.remington.remington_android_tools_test_app.test») и добавьте тестовый класс (например, «MainActivityTest»), который наследуется от ActivityInstrumentationTestCase2.
- Измените тестовый класс («TestActivityTest» в этом примере), чтобы использовать действие (например, «TestActivity») приложения Android Test («RemingtonAndroidToolsTestApp» в этом примере) в качестве параметра для ActivityInstrumentationTestCase2.
- Отредактируйте тестовый класс («TestActivityTest» в этом примере) и создайте конструктор по умолчанию, который вызывает super (Class) и передает класс приложения Android Test (например, «TestActivity.class»).
У вас должно получиться три проекта (Android Library, Android Test App, Android Library Tester), которые выглядят примерно так:
У вас должен получиться класс для тестирования вашей библиотеки Android, который выглядит примерно так:
package danny.remington.remington_android_tools_test_app.test;
import android.test.ActivityInstrumentationTestCase2;
import danny.remington.remington_android_tools_test_app.TestActivity;
/**
*
*/
public class TestActivityTest extends
ActivityInstrumentationTestCase2<TestActivity> {
public TestActivityTest() {
super(TestActivity.class);
}
}
Затем вы можете добавить любой тест, который хотите. Вам не нужно будет ссылаться на приложение Android Test («RemingtonAndroidToolsTestApp» в этом примере) для дальнейшего запуска тестов, если только они не требуют доступа к конкретному компоненту Android (например, к папке Assets). Если вам нужен доступ к каким-либо компонентам, специфичным для Android, вы можете сделать это, изменив приложение Android Test (в данном примере «RemingtonAndroidToolsTestApp»), а затем сославшись на него с помощью инструментов, предоставляемых стандартным Android Junit API. (Подробнее об этом можно прочитать здесь: http://developer.android.com/tools/testing/testing_android.html )