Android сообщает об ошибке = невозможно найти информацию об инструментарии для: ComponentInfo {}

Есть много тем/вопросов, касающихся этой проблемы в stackoverflow (например, Error=Unable to find the toolsing info for: ComponentInfo{ }) и другой веб-сайт, но моя проблема отличается от других тем, что я работаю над автоматизацией. Итак, позвольте мне рассказать вам больше деталей.

У меня нет проблем, когда я тестирую на локальной машине (я имею в виду свой ноутбук). Я могу запустить тестирование эспрессо, и все тесты пройдены.

Теперь я хочу запустить эти тесты на CI (Bitrise в моем случае). Я создаю и запускаю эмулятор. Подтверждаю, проблем нет. У меня есть следующий скрипт:

...
# Check which instrumentation packages have been installed on your device, https://stackoverflow.com/a/23394559/513413
echo ""
echo "Check which instrumentation packages have been installed..."
adb shell pm list instrumentation

# Running tests
echo ""
echo "running test..."
adb shell am instrument -w -r   -e debug false -e class my.package.name.MyActivityTest my.package.name.test/android.support.test.runner.AndroidJUnitRunner

Это мой вывод из CI:

Check which instrumentation packages have been installed...
instrumentation:com.android.emulator.smoketests/android.support.test.runner.AndroidJUnitRunner (target=com.android.emulator.smoketests)
instrumentation:com.android.smoketest.tests/com.android.smoketest.SmokeTestRunner (target=com.android.smoketest)
instrumentation:com.example.android.apis/.app.LocalSampleInstrumentation (target=com.example.android.apis)
running test...
INSTRUMENTATION_STATUS: id=ActivityManagerService
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{my.package.name.test/android.support.test.runner.AndroidJUnitRunner}
INSTRUMENTATION_STATUS_CODE: -1
android.util.AndroidException: INSTRUMENTATION_FAILED: my.package.name.test/android.support.test.runner.AndroidJUnitRunner
    at com.android.commands.am.Am.runInstrument(Am.java:1093)
    at com.android.commands.am.Am.onRun(Am.java:371)
    at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
    at com.android.commands.am.Am.main(Am.java:100)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:251)

У меня есть следующая строка кода в defaultConfig файла app.gradle:

testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'

У меня есть android.support.test.runner.AndroidJUnitRunner под моей EditConfiguration, как вы видите по следующей ссылке.

введите здесь описание изображения

Я предполагаю, что мой тест не пройден, потому что у меня нет этой команды в эмуляторе моего CI. Итак, мой вопрос: как я могу добавить его через командную строку? Это возможно?

Обновлять

Это мой полный сценарий.

#!/bin/bash

# List of devices attached
adb devices

# List all *.apk files inside /bitrise/deploy path
echo "List of all *.apk files in $BITRISE_DEPLOY_DIR"
cd $BITRISE_DEPLOY_DIR && ls

# Push and Install main apk file
echo ""
echo "Pushing main apk at $BITRISE_APK_PATH to /data/local/tmp/my.package.name and install it..."
adb push $BITRISE_APK_PATH /data/local/tmp/my.package.name
adb shell pm install -r "/data/local/tmp/my.package.name"

# Push and Install Test Unaligned apk file
echo ""
echo "Pushing test unaligned apk at $BITRISE_DEPLOY_DIR/my-app-debug-unaligned.apk to /data/local/tmp/my.package.name.test and install it..."
adb push $BITRISE_DEPLOY_DIR/my-app-debug-unaligned.apk /data/local/tmp/my.package.name.test
adb shell pm install -r "/data/local/tmp/my.package.name.test"

# Check which instrumentation packages have been installed on your device, https://stackoverflow.com/a/23394559/513413
echo ""
echo "Check which instrumentation packages have been installed..."
adb shell pm list instrumentation

# Running tests
echo ""
echo "switch directory to $BITRISE_SOURCE_DIR"
cd $BITRISE_SOURCE_DIR
echo "running test..."
adb shell am instrument -w -r -e debug false -e class my.package.name.path.MinHappyPathTest my.package.name.path/android.support.test.runner.AndroidJUnitRunner

person Hesam    schedule 20.04.2016    source источник
comment
эй @Hesam ты нашел решение?   -  person Kaskasi    schedule 21.02.2019


Ответы (1)


Вы должны установить (установить adb) и приложение APK и протестировать APK (это другой APK) перед запуском «инструмента adb shell am».

person Vyacheslav Pedak    schedule 21.04.2016
comment
Спасибо, я только что обновил свой вопрос полным сценарием. Я переместил эти два файла apk. - person Hesam; 21.04.2016