Не удалось выполнить проверку работоспособности: Не удалось найти информацию об оборудовании для: ComponentInfo {} - ошибка, пытающаяся протестировать в IntelliJ с помощью Gradle
Каждый раз, когда я пытаюсь запустить свои тесты, консоль говорит следующее:
Running tests
Test running startedTest running failed: Unable to find instrumentation info for:
ComponentInfo{com.employeeappv2.employeeappv2.test/android.test.InstrumentationTestRunner}
Empty test suite.
Я застрял на этом какое-то время, и решения, которые я видел онлайн, пока не помогли.
Моя структура проекта настроена следующим образом:
* Основной модуль
-src * instrumentTest -Ява *главный -Ява -manifest * Build.gradle
Мой файл build.gradle выглядит следующим образом:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 19
buildToolsVersion "19.1.0"
defaultConfig {
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "2.1.0"
testPackageName "login.test"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard- rules.txt'
}
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('libs/scandit.zip')
compile project(':pullToRefresh')
compile 'com.android.support:appcompat-v7:19.+'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.1+'
compile 'org.springframework.android:spring-android-rest-template:1.0.1+'
compile 'org.json:json:20090211'
compile 'com.fasterxml.jackson.core:jackson-databind:2.3.1'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.3.0'
compile 'com.fasterxml.jackson.core:jackson-core:2.3.1'
compile 'com.android.support:support-v4:19.1.+'
compile 'com.mcxiaoke.volley:library:[email protected]'
androidTestCompile 'junit:junit:3.8'
}
Вам нужно иметь отдельный манифест для вашего каталога тестов? Если да, то как это будет выглядеть?
Изменить: я попытался добавить манифест в мой каталог InstruTest без везения. Обратите внимание, что я не мог заставить IntelliJ разрешить имя targetPackage, поэтому он выглядит красным.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.employeeappv2.employeeappv2.src.instrumentTest"
android:versionCode="1"
android:versionName="1.0.0">
<application>
<uses-library android:name="android.test.runner" />
</application>
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.employeeappv2.employeeappv2.src.main"/>
</manifest>
Ответы
Ответ 1
Таким образом, основная проблема заключалась в том, что когда я создал папку androidTest под /src/, она не собиралась IntelliJ в качестве исходной папки для тестирования (подкаталог java должен стать зеленым). Я использовал IntelliJ 13.0.3 и после обновления до 13.1.3 все мои проблемы ушли.
* Примечание. Не пытайтесь добавить манифест в папку androidTest, в документах Gradle указано, что манифест должен быть автоматически сгенерирован при создании папки androidTest. Проблема для меня заключалась в том, что файл не был сгенерирован, так как androidTest не был распознан IntelliJ/Gradle, тем самым отказав в отсутствии аппаратной ошибки.
Ответ 2
Я использую Android Studio 1.1, и следующие шаги решили эту проблему для меня:
-
В Run - Edit Configurations - Android Tests
Укажите измерительный прибор как android.test.InstrumentationTestRunner
-
Затем в окне инструментов "Варианты исполнения" (слева) измените тестовый артефакт на Android Instrumentation Tests
.
В файле build.gradle нет требуемого тестаИнструментRunner, и в файле манифеста не требуется тег инструментария.
Ответ 3
У меня была такая же ошибка, когда я попытался добавить multiDexEnabled true
в build.gradle
.
Я добавляю свой опыт здесь, потому что это один из первых хитов Google при поиске с сообщением об ошибке ... Unable to find ... ComponentInfo ...
.
В моем случае добавление testInstrumentationRunner
, как здесь, получило трюк:
...
android {
...
defaultConfig {
...
testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"
}
}
(У меня com.android.tools.build:gradle:1.5.0
)
Ответ 4
Когда я создал новый пакет, Studio создала класс ApplicationTest. В качестве примера, используя us.myname.mypackage, была создана следующая структура каталогов:
app/[myPackage]/src/androidTest/java/us/myname/mypackage/ApplicationTest.class
Первоначально он работал из коробки. Он прекратил работать после того, как я установил вкусы продукта. Впоследствии я сделал следующие изменения для build.gradle:
defaultConfig {
...
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
некоторые предпочитают
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
(С моей текущей конфигурацией я должен использовать ...InstrumentationTestRunner
при отладке и AndroidJUnitRunner
при использовании типа сборки выпуска.)
Вышеуказанная конфигурация работает только с типом сборки отладки. Если вы хотите использовать его с выпуском или с помощью специального типа сборки, вы можете включить в build.gradle следующее:
buildTypes {
release {
...
}
debug {
...
}
}
testBuildType "release"
На вкладке "Варианты сборки" в нижней левой части Studio убедитесь, что у вас есть Android Instrumentation Tests
и выбран правильный buildType
.
Ответ 5
Для чего стоит, AS 2.3 повесил трубку, когда я создал пользовательский тестовый бегун после использования обычного тестового бегуна. Я получил ту же ошибку, что и в вопросе.
Удаление конфигураций отладки для ВСЕ Android Instrumented Tests и перестройка исправлена. Я считаю, что проблема заключалась в том, что вы больше не можете выбрать пользовательский бегун в конфигурациях Debug, потому что он скорее всего встроен через gradle.
Ответ 6
Мне пришлось сделать комбинацию ответа VikingGlen , лишить ответ и этот ответ. Этот ответ работает для Android Studio версии 2.1.
-
Run → Edit Configurations... → General → Специфический инструментарий (необязательно): "android.support.test.runner.AndroidJUnitRunner"
-
В build.gradle
(тот, который имеет все ваши зависимости), поставьте это:
defaultConfig {
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
}
Затем он может запускать тесты этого типа:
@RunWith(AndroidJUnit4.class)
@LargeTest
public class ApplicationTest {
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void login() {
//Open Drawer to click on navigation.
onView(withId(R.id.drawer_layout))
.check(matches(isClosed(Gravity.LEFT))) // Left Drawer should be closed.
.perform(open()); // Open Drawer
}
}
Ответ 7
У меня была эта проблема и исправлена ее, выбрав Run → Edit Configurations → Green '+' в левом верхнем углу → JUnit
Оттуда установите 'use modpath mod...' в 'app' (или ваше имя приложения по умолчанию, которое отображается слева от запуска (кнопка воспроизведения) при запуске приложения)
Наконец, введите тестовое имя класса в текстовое поле "class:". Нажмите "Применить" и в порядке.
В этот момент, если тестовый класс не имеет других ошибок, он должен работать.
Ответ 8
Это то, что я заметил в своем проекте, в моем модуле app (main) build.gradle. У меня была следующая конфигурация buildType
buildTypes {
debug {
multiDexEnabled true
}
mock {
initWith(buildTypes.debug)
}
}
testBuildType "mock"
Когда я использовал AndroidJUnitRunner как тестовый бегун (как из Android Studio), так и как testInstrumentationRunner в build.gradle, тесты выполнялись без сбоев.
В подмодуле, который имеет multiDexEnabled true как defaultConfig
defaultConfig {
multiDexEnabled true
....
}
Я столкнулся с проблемой
Test running startedTest running failed: Unable to find instrumentation info for:{mypackage.x.y/android.support.test.runner.AndroidJUnitRunner"}
когда я указал AndroidJUnitRunner в среде IDE и подмодуле build.gradle. И это было исправлено, указав MultiDexTestRunner как тестовый бегун в IDE/build.gradle.
Чтобы подвести итог, используйте MultiDexTestRunner для запуска тестов, когда значение multiDexEnabled указано в build.gradle, иначе используйте AndroidJUnitRunner как тестовый бегун.
Ответ 9
Решением моей проблемы является изменение имени метода с
@Test
public void test() {
...
}
в
@Test
public void testSomething() {
...
}
Надеюсь, это поможет кому-то.
Ответ 10
Убедитесь, что приложение было удалено для всех пользователей.
Зайдите в настройки → приложения (все приложения) → Если ваше приложение есть, нажмите на него → меню → удалить для всех пользователей.
Моя проблема заключалась в том, что приложение в какой-то момент было удалено, но все еще на устройстве; Это означает, что он не был удален для всех пользователей. (Другая проблема, не знаю, как решить. Я единственный пользователь на моем устройстве)
Из-за этого приложение не переустанавливалось, и тестовый набор не имел к чему работать.