Тип Android Junit4 отсутствует исключение
У меня есть проект Android, в котором я пытаюсь запустить тесты инструментовки для использования AndroidStudio, но когда я пытаюсь запустить весь файл класса для тестов, я получаю исключения, как указано ниже:
java.lang.TypeNotPresentException: Type android.support.test.runner.AndroidJUnit4 not present
Caused by: java.lang.ClassNotFoundException: android.support.test.runner.AndroidJUnit4
Интересно, что в этом классе Instrument Test я могу запускать отдельные методы, но не весь класс. Мой файл build.gradle для приложения находится ниже:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
lintOptions {
abortOnError false
}
compileSdkVersion 28
defaultConfig {
applicationId "com.sarpuner.journal"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
buildToolsVersion '27.0.3'
}
repositories {
maven { url "https://dl.bintray.com/ijabz/maven" }
}
dependencies {
androidTestImplementation 'com.android.support:support-annotations:27.1.1'
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'dev.dworks.libs:volleyplus:0.1.4'
implementation 'com.google.code.gson:gson:2.8.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'org.jsoup:jsoup:1.11.3'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.1.1'
implementation 'net.jthink:jaudiotagger:2.2.3'
api 'com.google.guava:guava:26.0-android'
}
И класс InstrumentTest выглядит следующим образом:
package com.sarpuner.journal
import android.support.test.InstrumentationRegistry
import android.support.test.runner.AndroidJUnit4
import android.util.Log
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
import java.io.File
private const val INSTRUMENT_TAG = "InstrumentTest"
// TODO: There is a problem here with the class run!
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
private val appContext = InstrumentationRegistry.getTargetContext()
@Test
fun useAppContext() {
// Context of the app under test.
assertEquals("com.sarpuner.journal", appContext.packageName)
}
@Test
fun downloadAndSaveAudio() {
val url = "http://telechargement.rfi.fr/rfi/francais/audio/jff/201808/journal_francais_facile_20h00_-_20h10_tu_20180809.mp3"
val name = "09-08-2018.mp3"
val f = File(appContext.filesDir, name)
Log.d(INSTRUMENT_TAG, f.absolutePath)
downloadAudio(url, f)
}
@Test
fun downloadAndSaveTranscript() {
val url = "https://savoirs.rfi.fr/fr/apprendre-enseigner/langue-francaise/journal-en-francais-facile-09082018-20h00-gmt"
val name = "09-08-2018.txt"
val f = File(appContext.filesDir, name)
downloadText(url, f)
}
@Test
fun addLyricsToAudio() {
}
}
Любая помощь/руководство очень ценится, спасибо.
Ответы
Ответ 1
Это вызвано тем, что Android Studio пытается выполнить инструментальный тест как тест JUnit.
Мне пришлось перейти в "Редактировать конфигурации...", удалить конфигурацию из группы Android JUnit и вручную добавить в группу "Инструментов Android Instrumented Tests". После этого у меня не было проблем с выполнением тестов.
В Android Studio нажмите Run > Edit Configurations
.
https://developer.android.com/studio/run/rundebugconfig
Ответ 2
Надеюсь, кто-то может дать вам лучший ответ о том, почему, но у меня была такая же проблема. Я сделал следующее:
- Build> Clean Project,
- Запустите приложение на эмуляторе
Это было сделано, я смог вернуться в состояние, в котором я мог снова запустить тесты.
Ответ 3
Написание шагов, если кто-то столкнулся с проблемой во время редактирования конфигурации выше @Bohsen answe r
- В Android Studio нажмите
Run > Edit Configurations
(или нажмите alt + shift + f10
, если в Windows), чтобы открыть редактор конфигурации.
- Левая панель окна показывает конфигурации и их группы.
- Android JUnit group
- Инструментальные тесты Android
Если ваш тест является инструментальным, удалите его из любой группы тестов JUnit.
Если ваш тест является тестом JUnit, удалите его из любых групп инструментальных тестов.
Например, мой тест (DBTest.kt) появлялся как в разделе Android JUnit, так и в разделе Инструментированные группы. Поэтому я удалил из группы JUnit и снова запустил, все работало нормально.
Ответ 4
У меня было то же самое с:
Type androidx.test.ext.junit.runners.AndroidJUnit4 not present
Я много чего перепробовал, прежде чем вручную удалить приложение с устройства и снова запустить тест. Надеюсь это поможет!