Android Studio импортирует существующие модульные тесты "Невозможно найти информацию об оборудовании"

Итак, я пробую нашу Android-студию и тестирую проект, который работал в eclipse. У меня есть все, что компилируется, и приложение запустится отлично, но я не могу дорабатывать свои модульные тесты и работать. В итоге я их компилировал, добавив папку приложений в качестве зависимости, но я не думаю, что моя конфигурация запуска правильная, потому что всякий раз, когда я запускаю свои тесты, я получаю эту ошибку

Installing <packagename>
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/<packagename>"
pkg: /data/local/tmp/<packagename>
Success


Running tests
Test running started
Test running failed: Unable to find instrumentation info for: ComponentInfo{<packagename>/android.test.InstrumentationTestRunner}
Empty test suite.

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

Ответ 1

Если у вас есть testInstrumentationRunner, определенный в вашем build.gradle, например:

android {
    defaultConfig {
        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"

убедитесь, что в окне конфигурации запуска вы используете тот же самый "Специальный измерительный прибор" в вашей конфигурации Android Studio/IntelliJ для вашего теста.

Ответ 2

В моем случае решение было:

  • Просмотp > Панель инструментов > Варианты сборки
  • Выберите вариант * Отладка

Ответ 3

Объяснение и решение

Эта ошибка " Невозможно найти аппаратное обеспечение" появляется, если targetPackage, объявленный в манифесте тестового приложения, отличается от пакета, объявленного в манифесте тестируемого приложения:

  • Проверяемое приложение:

    <manifest package="com.example.appbeingtested" … >
    
  • Тестирование:

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.example.appbeingtested" … />
    

Ответ 4

Я решил эту проблему, изменив

android.test.InstrumentationTestRunner 

в

com.android.test.runner.MultiDexTestRunner

на вкладке EditConfigurations → Specific Instrumentation Runner (необязательный).

Оказывается, потому что мое приложение использует MultiDex, мне нужно также изменить тестовый бегун на MultiDexTestRunner.

UPDATE:

Как комментарий @dan, InstrumentationTestRunner устарел использовать AndroidJUnitRunner вместо этого.

Ответ 5

В моем случае ошибки Run/Debug Configurations были неправильными.

Одно решение:

  • Перейдите в "Конфигурации запуска/отладки"

    Запустить → Изменить конфигурации...

  • Настройка Android-теста для тестового класса

  • Выберите свою тестовую конфигурацию Android с левой стороны или создайте новую с пиктограммой плюса и назовите ее, например. ClassNameTest

  • Выберите модуль, содержащий ваш тестовый класс. В простейшем случае тестовый класс находится в вашем модуле приложения, поэтому выберите приложение.

  • Выберите в следующей строке тестовую конфигурацию. Я использую:

    • Класс: для запуска всех тестов одного класса.
  • Выбор тестового класса

  • Наконец настройте целевое устройство и выберите ok.

Ответ 6

Это работает только в версии AndroidStudio. 2.3

В моем случае был выбран неправильный бегун инструментария.

Я исправил это, указав измерительный прибор в настройке Run/Debug Configuration (см. ниже). Там вы можете выбрать бегун из списка. 1]

Вы найдете конфигурацию Run/Debug: Run → Edit Configurations...

Ответ 7

У меня такая же проблема, как и @Iuliia Ashomok, и попробовал все в Интернете.

По-прежнему не повезло.

После 2-дневного расследования я обнаружил, что проблема создается мобильным телефоном..V.

Я первоначально использовал Xiaomi Mi4i в качестве тестового устройства (с корнем), и тесты не могли быть запущены. Конечно, я получил ошибку ниже.

Test running failed: Unable to find instrumentation info for: ComponentInfo{<packagename>/android.test.InstrumentationTestRunner}

Однако, когда я использую Sony Xperia Z3 (нет корня), все работает хорошо.

Ответ 8

Это швы, у вас нет хорошей структуры проекта.

  • Откройте AndroidManifest.xml и проверьте, имеет ли он

    <instrumentation android:name="android.test.InstrumentationTestRunner"
                         android:targetPackage="com.example.YourClass"
                         android:label="Tests for com.example.YourClass"/>
    

Если НЕТ делать следующее:

 
        MyProject/
              AndroidManifest.xml
              res/
                  ... (resources for main application)
              src/
                  ... (source code for main application) ...
              tests/
                  AndroidManifest.xml
                  res/
                      ... (resources for tests)
                  src/
                      ... (source code for tests)
  1. Вы видите, что вам нужен внутренний test модуль.
    Для создания его в Idea IDE выполните следующий Файл → Новый модуль → Модуль тестирования. После создания вы можете увидеть один новый AndroidManifest.xml. И внутри него есть документация.

Ответ 9

Я получил эту ошибку. Я использую инструменты sdk в режиме CLI. И ошибка произошла, когда я запускал 'ant test' в тестовом проекте. Позже я заметил, что я даже не строил и не устанавливал тестовый проект раньше! (с 'ant debug install') Поэтому вы должны попробовать проверить свою текущую конфигурацию, чтобы убедиться, что тестовый проект получил эффективную сборку перед запуском теста. В другом случае Android Studio использует Gradle. Я не знаю это хорошо, но попробуйте проверить настройки Gradle для проекта или файла настроек Gradle.

Ответ 10

Для меня проблема связана с этой зависимостью:

debugCompile 'com.android.support.test:rules:0.2'

После того, как я удалил его, мои тесты были найдены и снова запущены.

Обратите внимание, что я не получил сообщение "Не удалось найти аппаратное обеспечение", но сообщение "Нет тестов найдено".

Ответ 11

Оказалось, это проблема с задержкой. Он автоматически фиксировался после того, как я долго ждал чтения интернет-решений. Я перекомпилировал код, и он сработал.

Ответ 12

Поскольку ни один из этих ответов не помог мне, я хотел поделиться своим решением для тех, кто так же отчаянн, как и я.:)

Из-за библиотек тестирования, которые я использовал, мне нужно было включить поддержку multidex, добавив multiDexEnabled true в мою конструкцию Gradle. Я не уверен, что у меня была полностью реализована поддержка multidex (правильный способ сделать это изменился с тех пор, как я ее последний раз реализовал), но в конечном итоге я не нуждался в этом, и удаление этой строки из моей сборки исправило ошибку, У моей команды на работе было несколько проблем с тестированием, связанных с поддержкой поддержки multidex... в типичном стиле Android.

Ответ 13

В моем случае в тех же классах в некоторых тестовых случаях был выбран правильный тестовый бегун (android.support.test.runner.AndroidJUnitRunner), который был определен в build.gradle, а в некоторых тестовых случаях собирался android.test.InstrumentationTestRunner, который не был определен, по крайней мере, в Manifest или build.gradle или редактировании конфигурации. В идеале это должно было быть разрешено с помощью проекта Sync с параметром Gralde, хотя это не сработало.

Наконец, я нашел неправильный тестовый бегун, определенный против метода в .idea/workspace.xml, я изменил его вручную, и проблема была решена.

Как правило, мы не должны редактировать этот сгенерированный файл Android Studio, но для меня он работал как последний вариант.