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, объявленный в манифесте тестового приложения, отличается от пакета, объявленного в манифесте тестируемого приложения:
Ответ 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)
- Вы видите, что вам нужен внутренний 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, но для меня он работал как последний вариант.