Как запустить тесты Android с помощью sbt?

Я разработал для своего приложения небольшой набор тестов на Android, написанный в Scala, который использует библиотеку Robotium. Набор для всех целей и задач является стандартным тестовым проектом Android JUnit и успешно запускается при запуске из Eclipse.

Я уже успешно создал и запустил основное приложение для Android с помощью sbt android-plugin. Основное приложение расположено в [ProjectDir]/src/main. Я также смог успешно создать приложение для тестирования Android, которое находится в каталоге [ProjectDir]/tests/src/main. Я проверил эмулятор, и тестовое приложение, похоже, было правильно установлено с помощью команды android-plugin tests/android:install-emulator. Однако, когда я пытаюсь запустить тестовый проект через sbt tests/android:test-emulator, я получаю:

...
Test results for InstrumentationTestRunner=
Time: 0.001

OK (0 tests)

Как я могу заставить sbt android-plugin распознавать, что проект содержит тесты JUnit и запускает их?

Ответ 1

Соглашение об именах, используемое здесь, такое же, как и обычный JUnit, и поэтому вам нужно назвать тесты xxxTest.class. Им также необходимо расширить TestCase (AndroidTestCase, InstrumentationTestCase и т.д.).

Чтобы повторить, eclipse будет запускать команду, которая будет выглядеть так:

adb shell am instrument -w -e class com.android.foo.FooTest,com.android.foo.TooTest com.android.foo/android.test.InstrumentationTestRunner

Он добавит имя класса в команду, поэтому соглашение об именах может не применяться.

Если вы запустите с sbt, он запустит

adb shell am instrument -w com.android.foo/android.test.InstrumentationTestRunner

который найдет все классы под именем пакета приложения com.android.foo, который заканчивается с помощью someClassNameTest.