AndroidJUnit4.class is deprecated: How to use androidx.test.ext.junit.runners.AndroidJUnit4?
Solution 1
According to the documentation for AndroidJUnit4,
- The gradle file should contain the following line:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- Change test class to
AndroidJUnit4ClassRunner
fromAndroidJUnit4
If it still doesn't work, make sure that you clean and/or rebuild your project. Also you can check the current version directly in Google's maven repository
Solution 2
If you've tried @MarcelGangwisch's solution and your build fails saying it can't find the resource AND you also cleaned/rebuilt your project and it still doesn't work, try this: (based also on @KrzysztofDziuba's solution)
In your gradle file where you changed the dependency, make sure you are adding it as the type you need, ie.:
For UI tests:
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
For Unit tests:
testImplementation 'androidx.test.ext:junit:1.1.0'
In my instance I added it as both and now it works.
Solution 3
For me the following steps worked:
1. Replace the androidx libraries with the one posted here . my final app/build.gradle
looked like this:
android {
...
defaultConfig {
...
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
...
}
dependencies {
...
testImplementation 'junit:junit:4.12'
// Core library
androidTestImplementation 'androidx.test:core:1.2.0'
// AndroidJUnitRunner and JUnit Rules
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
// Assertions
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.ext:truth:1.2.0'
androidTestImplementation 'com.google.truth:truth:0.42'
// Espresso dependencies
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
I then manually replaced the imported modules in my ExampleInstrumentTest.java
class with latest classes:
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.rule.ActivityTestRule;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4ClassRunner.class)
public class ExampleInstrumentedTest {
...
@Rule
public final ActivityTestRule<MainActivity> main = new ActivityTestRule<>(MainActivity.class, true);
@Before
public void init() {
...
}
@Test
public void listCount() {
...
}
@Test
public void useAppContext() {
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
Assert.assertEquals("in.curioustools.aad_x_testing2", appContext.getPackageName());
System.out.println("useAppContext : Test Ran");
}
}
The thing that was bugging me was the fact that InstrumentationRegistery
class was still deprecated. So i used InstrumentationRegistry.getInstrumentation().getTargetContext();
from androidx.test.platform.app.InstrumentationRegistry
class.
Solution 4
Solution
Add this line in to build.gradle:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
Change
AndroidJUnit4
toAndroidJUnit4ClassRunner
in the test class
Warning
I got the same error, but the following solution failed for me:
File -> Invalidate Caches..., and select Invalidate and Restart
Solution 5
I tried all given above until I went to the official Android site, and they suggested importing from androidx.test.ext.junit.runners.AndroidJUnit4
instead of androidx.test.runner.AndroidJUnit4
. link
![Marcel Gangwisch](https://i.stack.imgur.com/Vd0no.jpg?s=256&g=1)
Marcel Gangwisch
I'm a student working on programming in the field of GIS, environmental modeling and App development
Updated on September 30, 2020Comments
-
Marcel Gangwisch over 3 years
For my instrumentation tests I was using
@RunWith(AndroidJUnit4.class)
from
import androidx.test.runner.AndroidJUnit4;
in order to establish my test cases. Now this line gets marked as deprecated with the hint to use
AndroidJUnit4
fromimport androidx.test.ext.junit.runners.AndroidJUnit4
However if I try to import
AndroidJUnit4
from the named package I get the error, thatext
can not be resolved.Do you have an idea, what package should be included in gradle to resolve this issue?