Сбой при запуске инструментария из-за сбоя процесса

Я хотел провести следующий тест:

package com.xxx.yyy;

import android.content.Context;
import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;

import static org.junit.Assert.*;

/**
 * Instrumented test, which will execute on an Android device.
 *
 * @see <a href = "http://d.android.com/tools/testing">Testing documentation</a>
 */
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
    @Test
    public void useAppContext() {
        // Context of the app under test.
        Context appContext = InstrumentationRegistry.getTargetContext();

        assertEquals("com.xxx.yyy", appContext.getPackageName());
    }
}

Но в консоли появляется ошибка:

$ adb shell am instrument -w -r   -e debug false -e class 'com.xxx.yyy.ExampleInstrumentedTest' com.xxx.yyy.test/android.support.test.runner.AndroidJUnitRunner
Client not ready yet..
Started running tests
Test running failed: Instrumentation run failed due to 'Process crashed.'
Empty test suite.

Я не могу понять, почему он не работает.

Вот мой файл Gradle:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

apply plugin: 'org.greenrobot.greendao' // das kann dann später weg
//apply plugin: 'kotlin-kapt' // if using Kotlin
//apply plugin: 'io.objectbox'


android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.xxx.yyy"
        minSdkVersion 21
        targetSdkVersion 28    
        versionCode 130
        versionName "1.3.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

greendao {
    schemaVersion 4
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.vectordrawable:vectordrawable:1.0.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
    implementation 'org.greenrobot:greendao:3.2.2'
    implementation 'com.google.firebase:firebase-core:16.0.3'
    implementation 'com.google.firebase:firebase-ads:15.0.1'
    testImplementation 'junit:junit:4.12'
    implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test:rules:1.0.2'
}

apply plugin: 'com.google.gms.google-services'

Какие-либо предложения?

56
0
29 411
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Решение нашел сам. Я обновился до Android, поэтому мне также нужно было обновить свой файл build.gradle из:

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

к

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

Для меня было наоборот. Я не использовал AndroidX, но для бегуна был установлен androidx.test ".

Ajith Memana 10.12.2018 17:41

Моя Android Studio автоматически обновилась до androidx.test.runner.AndroidJUnitRunner, и эта проблема все еще не устранена.

IgorGanapolsky 06.01.2019 16:39

Я использую собственный JUnitRunner и сталкиваюсь с этой проблемой. Я проверил правильность названия пакета. Я не знаю что еще делать

AdamMc331 31.01.2019 16:13

То же самое, что и @ AdamMc331 .. У меня есть собственный JUnitRunner, и иногда тест проходит, в некоторых случаях он не работает. Иногда вылетает после прохождения тестов, иногда все вместе. Это действительно расстраивает.

tsaulic 27.02.2019 07:35

@ AdamMc331, это работает с пользовательским JUnitRunner? Имея ту же проблему

Tys 08.07.2019 23:34

@Tys Я успешно использую собственный JUnitRunner в этом проекте: github.com/adammc331/pokedex Я не могу вспомнить, с какой именно проблемой я столкнулся, но, возможно, сравнивая код, вы увидите что-то, что выделяется.

AdamMc331 08.07.2019 23:54

Я использую - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner", все еще обращенный к нему.

arango_86 19.01.2021 14:02
androidTestImplementation "androidx.test.espresso:espresso-core:3.3.0"
androidTestImplementation "androidx.test:runner:1.3.0"
androidTestImplementation "androidx.test:core:1.3.0"
androidTestImplementation "androidx.test.ext:junit:1.1.2"
androidTestImplementation "androidx.test:rules:1.3.0"

кроме конфигурации androidx.test.runner.AndroidJunitRunner, также проверьте зависимость. Приведенный выше код работает для меня.

Именно androidTestImplementation "androidx.test.espresso:espresso-core:$espresso_version" вызвал у меня ошибку :)

klenki 08.02.2021 09:15

Получил ошибку:

Test running failed: Instrumentation run failed due to 'Process crashed.'

В моем случае тестовая консоль Android показывала только указанную выше ошибку без каких-либо подробностей.

Но в журнале отображается полная ошибка. В моем случае я забыл добавить идентификатор приложения AdMob в AndroidManifest.xml.

Поэтому всегда не забывайте проверять logcat для получения дополнительных сведений об ошибках!

Когда он говорит, проверьте logcat, затем logcat

Killer 02.09.2019 16:49

Это спасло меня после нескольких часов изучения этого вопроса. Logcat для победы

sunadorer 08.06.2020 13:18

Проблема в том, что в моем logcat 100 записанных материалов, я не могу найти правильное местоположение журнала.

David 06.07.2020 01:37

Более года спустя, и это сэкономило мне дни, когда я выдергивал волосы, я использую androidx.startup и по какой-то странной причине он должен быть частью моего androidTestImplementation, иначе мои инструментальные тесты не пройдут, так как он отсутствует в пути к классу .test :) Спасибо!

wax911 26.09.2020 21:09

У меня такая же ошибка после обновления JUnit4 из:

androidTestImplementation 'junit:junit:4.12

к

androidTestImplementation 'junit:junit:4.13

Ошибка исчезла, когда я вернулся к:

androidTestImplementation 'junit:junit:4.12

Пробовал это и у меня не получилось.

Tonnie 23.03.2021 17:31

Итак, у меня были те же симптомы, но после внесения всех этих изменений я обнаружил, что следующая конфигурация в моем файле проекта build.gradle была проблемой

buildTypes{
     debug {
        debuggable true
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

Кажется, что minifyEnable и shrinkResources ведут себя по-разному после обновления до androidx, это могло произойти раньше, но я понял это сейчас. Комментируя строки, я исправил мои проблемы с тестами, которые не найдены.

buildTypes{
     debug {
        debuggable true
        //minifyEnabled true
        //shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

Эта ошибка возникла из-за того, что я изменил testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" на testInstrumentationRunner "androidx.test.ext.junit.runners.AndroidJUnit4" в build.gradle. В LogCat я увидел:

java.lang.RuntimeException: Unable to instantiate instrumentation ComponentInfo{com.example.debug.test/androidx.test.ext.junit.runners.AndroidJUnit4}: java.lang.ClassNotFoundException: Didn't find class "androidx.test.ext.junit.runners.AndroidJUnit4" on path: DexPathList[[zip file ...

Другие вопросы по теме