Attempted to use AndroidJUnit4 with standard JUnit runner and delegate runner 'org.robolectric.RobolectricTestRunner'could not be loaded
我正在使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | java.lang.Exception: Attempted to use AndroidJUnit4 with standard JUnit runner and delegate runner 'org.robolectric.RobolectricTestRunner'could not be loaded. Check your build configuration. at android.support.test.runner.AndroidJUnit4.loadRunner(AndroidJUnit4.java:89) at android.support.test.runner.AndroidJUnit4.loadRunner(AndroidJUnit4.java:63) at android.support.test.runner.AndroidJUnit4.<init>(AndroidJUnit4.java:57) at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) at androidx.test.internal.runner.junit4.AndroidAnnotatedBuilder.runnerForClass(AndroidAnnotatedBuilder.java:63) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) at androidx.test.internal.runner.AndroidRunnerBuilder.runnerForClass(AndroidRunnerBuilder.java:153) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) at androidx.test.internal.runner.TestLoader.doCreateRunner(TestLoader.java:73) at androidx.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:104) at androidx.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:789) at androidx.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:543) at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:386) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2145) |
我关注了意式浓缩咖啡的文档,发现一切都很好。可能是什么问题:
下面是我的gradle文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | apply plugin: 'com.android.application' apply plugin: 'jacoco' jacoco { toolVersion ="0.7.6.201602180812" } tasks.withType(Test) { jacoco.includeNoLocationClasses = true } task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { reports { xml.enabled = true html.enabled = true } def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*'] def debugTree = fileTree(dir:"$project.buildDir/intermediates/classes/debug", excludes: fileFilter) def mainSrc ="$project.projectDir/src/main/java" sourceDirectories = files([mainSrc]) classDirectories = files([debugTree]) executionData = fileTree(dir: project.buildDir, includes: [ 'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec' ]) } android { adbOptions { timeOutInMs 60 * 1000 } compileSdkVersion 28 defaultConfig { applicationId"com.levelapp.converge.convergelevelapp" minSdkVersion 15 targetSdkVersion 28 versionCode 1 versionName"1.0" testInstrumentationRunner"androidx.test.runner.AndroidJUnitRunner" } buildTypes { debug { testCoverageEnabled true } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } testOptions { animationsDisabled true unitTests { includeAndroidResources = true } unitTests.all { jacoco { includeNoLocationClasses = true } } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:animated-vector-drawable:28.0.0' implementation 'com.android.support:exifinterface:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.android.support:cardview-v7:28.0.0' implementation 'com.android.support:recyclerview-v7:28.0.0' androidTestUtil 'com.android.support.test:orchestrator:1.0.2-alpha1' testImplementation 'junit:junit:4.12' testImplementation 'org.robolectric:robolectric:3.7.1' implementation 'com.squareup.retrofit2:retrofit:2.5.0' implementation 'com.squareup.retrofit2:converter-gson:2.3.0' implementation 'com.koushikdutta.ion:ion:2.+' implementation 'com.mikhaellopez:circularimageview:3.2.0' implementation 'com.android.support:multidex:1.0.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.1.0' androidTestImplementation 'androidx.test:runner:1.1.0' androidTestImplementation 'androidx.test:rules:1.1.0' androidTestImplementation('com.android.support:multidex-instrumentation:1.0.1') { exclude group: 'com.android.support', module: 'multidex' } } |
然后下面是正在运行的测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 | @Rule public ActivityTestRule<MainActivity> activity = new ActivityTestRule<>(MainActivity.class); @Test public void loadRecyclerview(){ Espresso.onView(ViewMatchers.withId(R.id.rv)). perform(RecyclerViewActions.actionOnItemAtPosition(0, ViewActions.click())); Espresso.onView(withId(R.id.text)) .check(matches(withText("k33too"))) .check(matches(isDisplayed())); } |
可能是什么问题?
我看到您正在使用AndroidX。确保使用正确的导入。我今天遇到了这个确切的问题,意识到我应该一直使用
时仍在使用旧的
这为我修复了错误。
更新kotlin。确保所有
我已将依存关系添加到我的gradle文件中,它现在可以找到Roboelectric。
1 | testImplementation 'org.robolectric:robolectric:4.0' |
希望对您有所帮助
除了Zac \\的答案,我还必须利用以下依赖关系来解决此问题:
并在应用程序的build.gradle中确保您具有以下依赖性:
,然后在