Подтвердить что ты не робот

Не удалось выполнить проверку работоспособности: Не удалось найти информацию об оборудовании для: 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>
4b9b3361

Ответ 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

Убедитесь, что приложение было удалено для всех пользователей.

Зайдите в настройки → приложения (все приложения) → Если ваше приложение есть, нажмите на него → меню → удалить для всех пользователей.

Моя проблема заключалась в том, что приложение в какой-то момент было удалено, но все еще на устройстве; Это означает, что он не был удален для всех пользователей. (Другая проблема, не знаю, как решить. Я единственный пользователь на моем устройстве)

Из-за этого приложение не переустанавливалось, и тестовый набор не имел к чему работать.