Java 试图将AndroidJUnit4与标准JUnit runner和委托runner';org.roblectric.roblectrictestrunner';无法加载
我正在使用Java 试图将AndroidJUnit4与标准JUnit runner和委托runner';org.roblectric.roblectrictestrunner';无法加载,java,android,robolectric,android-espresso,Java,Android,Robolectric,Android Espresso,我正在使用espresso运行一些测试,但我不知道为什么roboelectric会包含在这个错误中,因为这些测试只针对espresso,下面是错误: java.lang.Exception: Attempted to use AndroidJUnit4 with standard JUnit runner and delegate runner 'org.robolectric.RobolectricTestRunner'could not be loaded. Check your build
espresso
运行一些测试,但我不知道为什么roboelectric会包含在这个错误中,因为这些测试只针对espresso,下面是错误:
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)
下面是正在运行的测试am:
@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()));
}
@规则
public ActivityTestRule activity=新建ActivityTestRule(MainActivity.class);
@试验
公共void loadRecyclerview(){
浓缩咖啡onView(ViewMatchers.withId(R.id.rv))。
执行(RecycleServiceActions.ActionOnItemPosition(0,ViewActions.click());
浓缩咖啡onView(带id(R.id.text))
.检查(匹配项(与文本(“k33too”))
.检查(匹配项(isDisplayed());
}
有什么问题吗?我看到您正在使用AndroidX。确保使用正确的导入。今天我遇到了这个问题,意识到我仍然在使用旧的
import-android.support.test.runner.AndroidJUnit4代码>当我应该使用导入androidx.test.runner.AndroidJUnit4时代码>
这为我修复了错误。我将依赖项添加到我的gradle文件中,它现在可以找到Roboelectric
testImplementation 'org.robolectric:robolectric:4.0'
希望它有帮助除了Zac的答案之外,我还必须利用以下依赖关系来解决这个问题:
导入androidx.test.ext.junit.runners.AndroidJUnit4
在应用程序的build.gradle中,确保您具有以下依赖项:
androidTestImplementation'androidx.test.ext:junit:1.1.0'
在android.buildConfig下,确保您有:
testInstrumentationRunner“androidx.test.runner.AndroidJUnitRunner”
kotlin的更新。确保所有@Rule
注释都是以@get:Rule
的形式出现的-这在我的案例中是一个问题。同样的问题,你找到解决方案了吗?@nilsi检查我的答案,看看这是否对你有帮助。检查以下答案中的解决方案:GLandroidx.test.runner.AndroidJUnit4现在不推荐使用。现在正确的使用方法是什么?androidx.test.ext.junit.runners.AndroidJUnit4来自测试实现“androidx.test.ext:junit:1.1.1”?毕业生应该如何看待@StephenM onstrike后的生活-评论?谢谢,这是我的工作
testImplementation 'org.robolectric:robolectric:4.0'