Я хотел провести следующий тест:
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'
Какие-либо предложения?
Решение нашел сам.
Я обновился до Android, поэтому мне также нужно было обновить свой файл build.gradle из:
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
к
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
Моя Android Studio автоматически обновилась до androidx.test.runner.AndroidJUnitRunner, и эта проблема все еще не устранена.
Я использую собственный JUnitRunner и сталкиваюсь с этой проблемой. Я проверил правильность названия пакета. Я не знаю что еще делать
То же самое, что и @ AdamMc331 .. У меня есть собственный JUnitRunner, и иногда тест проходит, в некоторых случаях он не работает. Иногда вылетает после прохождения тестов, иногда все вместе. Это действительно расстраивает.
@ AdamMc331, это работает с пользовательским JUnitRunner? Имея ту же проблему
@Tys Я успешно использую собственный JUnitRunner в этом проекте: github.com/adammc331/pokedex Я не могу вспомнить, с какой именно проблемой я столкнулся, но, возможно, сравнивая код, вы увидите что-то, что выделяется.
Я использую - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner", все еще обращенный к нему.
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" вызвал у меня ошибку :)
Получил ошибку:
Test running failed: Instrumentation run failed due to 'Process crashed.'
В моем случае тестовая консоль Android показывала только указанную выше ошибку без каких-либо подробностей.
Но в журнале отображается полная ошибка. В моем случае я забыл добавить идентификатор приложения AdMob в AndroidManifest.xml.
Поэтому всегда не забывайте проверять logcat для получения дополнительных сведений об ошибках!
Когда он говорит, проверьте logcat, затем logcat
Это спасло меня после нескольких часов изучения этого вопроса. Logcat для победы
Проблема в том, что в моем logcat 100 записанных материалов, я не могу найти правильное местоположение журнала.
Более года спустя, и это сэкономило мне дни, когда я выдергивал волосы, я использую androidx.startup и по какой-то странной причине он должен быть частью моего androidTestImplementation, иначе мои инструментальные тесты не пройдут, так как он отсутствует в пути к классу .test :) Спасибо!
У меня такая же ошибка после обновления JUnit4 из:
androidTestImplementation 'junit:junit:4.12
к
androidTestImplementation 'junit:junit:4.13
Ошибка исчезла, когда я вернулся к:
androidTestImplementation 'junit:junit:4.12
Пробовал это и у меня не получилось.
Итак, у меня были те же симптомы, но после внесения всех этих изменений я обнаружил, что следующая конфигурация в моем файле проекта 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 ...
Для меня было наоборот. Я не использовал AndroidX, но для бегуна был установлен androidx.test ".