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() {
}
}
どんな助け/ガイダンスも大歓迎です、ありがとう。
これは、Android StudioがJUnitテストとしてインストルメンテーションテストを実行しようとするために発生します。
「構成の編集...」に進み、Android JUnitグループから構成を削除し、「Android Instrumented Tests」グループに手動で追加する必要がありました。この後、テストの実行に問題はありませんでした。 。
Android Studioで、Run > Edit Configurations
。
誰かがあなたにもっと良い答えを与えてくれることを願っていますが、私はこれとまったく同じ問題を抱えていました。私は次のことをしました:
これで、テストを再度実行できる状態に戻ることができました。
上記の@Bohsenのansweの設定を編集中に誰かが問題に直面した場合のステップの作成 r
Run > Edit Configurations
(またはalt + shift + f10
(Windowsの場合)構成エディターを開きます。テストがインストルメンテーションテストである場合、JUnitテストグループから削除します。
テストがJUnitテストの場合、インストルメンテーションテストグループから削除します。
たとえば、私のテスト(DBTest.kt)はAndroid JUnitとInstrumentedグループのセクションの両方に表示されていました。だから私はJUnitグループから削除して再度実行しましたが、うまくいきました。
私も同じでした:
Type androidx.test.ext.junit.runners.AndroidJUnit4 not present
デバイスからアプリを手動で削除して、テストを再度実行する前に、多くのことを試しました。お役に立てれば!