AndroidJUnit4.class is deprecated: How to use androidx.test.ext.junit.runners.AndroidJUnit4?
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
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.
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.