I’m trying to write Android instrumented tests using androidx.test.ext:junit
, but I’m running into issues with setting up my test environment.
I added the dependency to my build.gradle
:
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
and tried creating a simple test:
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.example.myapp", appContext.getPackageName());
}
}
However, when I run the tests, they fail to execute properly or sometimes fail with classpath-related errors. I’ve checked the dependency version and my Gradle setup, but I still can’t get the tests to run consistently.
Has anyone successfully set up androidx.test.ext:junit
for instrumented tests?
I struggled with this too. One thing that helped me was cleaning the project and invalidating caches in Android Studio after adding androidx.test.ext:junit
.
Sometimes Gradle doesn’t pick up new instrumentation dependencies correctly.
Also, make sure your test class is under src/androidTest/java and not src/test/java.
Unit tests in test don’t have access to the instrumentation context, which can cause weird errors.
I agree with @Ambikayache
I had the same problem and it turned out to be the combination of dependency versions. I ended up adding these to androidTestImplementation:
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test:runner:1.5.2'
androidTestImplementation 'androidx.test:rules:1.5.0'
And like the others mentioned, setting the testInstrumentationRunner
to "androidx.test.runner.AndroidJUnitRunner"
was key. After that, all my instrumented tests started running without classpath
issues.
I ran into a similar issue when using androidx.test.ext:junit
. Make sure your testInstrumentationRunner
is set correctly in your
build.gradle
inside
defaultConfig:
android {
defaultConfig {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}
Also, double-check that you’re using compatible versions for androidx.test:core
and androidx.test:runner
, sometimes mismatched versions can cause classpath
errors.
Once I updated the runner and synced Gradle, my instrumented tests ran consistently.