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 сильно изменилось с тех пор, как я изначально разместил этот вопрос, но многие полезные люди продолжали публиковать свое конкретное решение для этой ошибки. Я бы советовал сортировать по активной и сначала проверять новейшие ответы.

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

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

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

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

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

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

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

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

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

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

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

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

 android.test.InstrumentationTestRunner 

в

 com.android.test.runner.MultiDexTestRunner 

На вкладке EditConfigurations -> Specific Instrumentation Runner (необязательно).

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

ОБНОВИТЬ:

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

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

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

  1. Перейдите в Run / Debug Configurations

    Запустить -> Изменить конфигурации …

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

  3. Выберите тестовую конфигурацию Android на левой стороне
    Или создать новый со значком плюс и назвать его, например, ClassName Test

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

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

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

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

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

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

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

Вы найдете Run / Debug Configurations: Run -> Edit Configurations …

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

Еще не повезло.

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

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

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

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

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

  1. Откройте AndroidManifest.xml и проверьте, есть ли у него

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

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

  1. Переорганизовать структуру каталогов на следующую: (это рекомендация из официального источника )
  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. Вы видите, что вам нужен внутренний модуль тестирования .
    Для его создания в Idea IDE выполните следующий файл -> Новый модуль -> Модуль тестирования . После создания вы можете увидеть один новый AndroidManifest.xml. И в нем есть документация .

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

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

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

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

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

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

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

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