Запуск андроид юнит-тестов из командной строки? - PullRequest
15 голосов
/ 21 июля 2010

Я пытаюсь запустить модульные тесты на платформе Android в соответствии с учебным пособием . Скажем, например, я хочу запустить тесты для приложения электронной почты. Я открываю файл /apps/Email/tests/AndroidManifest.xml, ищу элемент <manifest> и смотрю на атрибут package, который com.android.email.tests, а в элементе <instrumentation> я смотрю на атрибут android:name, который android.test.InstrumentationTestRunner. Теперь я открываю консоль и запускаю

$ . build/envsetup.sh
$ lunch 1
$ adb shell am instrument -w com.android.email.tests/android.test.InstrumentationTestRunner

Но это не удалось:

INSTRUMENTATION_STATUS: id=ActivityManagerService
android.util.AndroidException: INSTRUMENTATION_FAILED: com.android.email.tests/android.test.InstrumentationTestRunner
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.android.email.tests/android.test.InstrumentationTestRunner}

Итак .. Что я делаю не так?

Ответы [ 8 ]

9 голосов
/ 22 декабря 2010

Пожалуйста, запустите python development / testrunner / runtest.py email

, и тогда вы увидите, что он работает:).

В основном у вас не установлен пакет com.android.email.tests.

Вы можете увидеть, что доступно для инструментовки

pm list instrumentation

И вы должны увидеть

Инструментарий: com.android.email.tests / android.test.InstrumentationTestRunner (target = com.android.email)

И при этом

pm list packages

пакет: com.android.email

пакет:com.android.email.tests

3 голосов
/ 21 июля 2010

Возможно, вам потребуется сначала настроить тестовый проект с помощью команды android create test-project. Проверьте эту страницу на сайте Android Dev: Тестирование в других IDE для получения дополнительной информации. Я использовал этот метод для включения тестирования командной строки с помощью ant.

2 голосов
/ 12 августа 2010

Что я действительно забыл сделать, так это собрать и установить эти тестовые пакеты на мое устройство / эмулятор. Обнаружено, что после выполнения:

$ adb shell
# cd data/packages
# ls

И нет com.android.email.tests пакета там.

1 голос
/ 06 марта 2014

Тестовый пакет не установлен на эмуляторе

У меня возникла та же проблема, и я понял, что тестовый пакет не был установлен на эмуляторе, о чем говорит @marekdef.

Вместо использования команды, найденной в сгенерированном тестовом файле, я использовал следующее:

ant debug install test

* У меня был мой тестовый проект в <project_home>/tests, поэтому я закончил следующую командуиспользовать из моего проекта home каталог:

(cd tests && ant debug install test;)

Надеюсь, это поможет.

1 голос
/ 25 сентября 2012

Моя проблема была с этим тегом:

 <instrumentation
    android:name="android.test.InstrumentationTestRunner"
    android:label="Tests for app.under.test.package"
    android:targetPackage="app.under.test.package" />

Сначала у меня был неверный атрибут android:name, затем неверный целевой пакет (выше - правильное решение)

0 голосов
/ 28 февраля 2019

У меня есть этот run_all_test.sh скрипт для запуска всего юнит-теста и инструментированного теста:

#!/bin/bash
./gradlew --no-daemon clean test connectedCheck --stacktrace;
if [ $? -eq 0 ]
then
    echo "tests are successful"
else
    echo "tests FAILED"
    exit 1
fi

Объяснение:

  • test -> выполнить весь юнитtest

  • connectedCheck -> выполнить весь инструментированный тест

Вы можете начать здесь, чтобы настроить его в соответствии с вашими потребностями, следуя документацииздесь: https://developer.android.com/studio/test/command-line

0 голосов
/ 02 июля 2015

Для пользователя Gradle вы можете использовать следующие задачи:

$ gradle :project:installDebug :project:installDebugAndroidTest
0 голосов
/ 20 августа 2010

Я получил ошибку «Невозможно найти информацию об инструментах» при этом условии: я определил свой тестовый проект с именем пакета src, которое совпадает с именем тестируемого проекта.Например, источник для обоих проектов был в пакете com.mycompany.android.Эта установка параллельного src-пакета работала нормально в Eclipse, но на эмуляторе очень похоже, что тестовый apk перезаписывает приложение apk.

Исправление: я изменил пакет src тестового проекта для тестирования.mycompany.android.

Обратите внимание, что в любом случае манифест Android для тестового проекта определяет:

и

<инструментарий android: targetPackage = "тестируемый проект" ...>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...