We are trying to implement instrumentation testing for an Android app. While starting testing for app module we getting below exception.
java.lang.NoSuchMethodError: No virtual method getDeclaringClass()Ljava/lang/Class; in class Lorg/junit/runners/model/FrameworkMethod; or its super classes (declaration of 'org.junit.runners.model.FrameworkMethod' appears in /data/app/~~klRDKQ7A7CveMJYQuTzJKQ==/com.test.example-qLX_TtubaoWb603G_hnBnw==/base.apk!classes32.dex)
at androidx.test.internal.runner.junit4.statement.UiThreadStatement.classHasAnnotation(UiThreadStatement.java:98)
at androidx.test.internal.runner.junit4.statement.UiThreadStatement.hasAnnotation(UiThreadStatement.java:93)
at androidx.test.internal.runner.junit4.statement.UiThreadStatement.shouldRunOnUiThread(UiThreadStatement.java:74)
at androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner.methodInvoker(AndroidJUnit4ClassRunner.java:61)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:251)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:162)
at org.junit.runners.Suite.runChild(Suite.java:127)
at org.junit.runners.Suite.runChild(Suite.java:26)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:67)
at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:58)
at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:446)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2335)
Gradle config:
- Added testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" in defaultconfig block
- Using below dependencies in gradle
def androidx_core_test_version = "1.5.0"
def test_runner_version = "1.5.2"
def junit_version = "4.13.2"
def junit_ext_version = "1.1.5"
def espresso_version = "3.5.1"
testImplementation "androidx.multidex:multidex:2.0.1"
androidTestImplementation "androidx.test:core:$androidx_core_test_version"
androidTestImplementation "androidx.test.ext:junit:$junit_ext_version"
androidTestImplementation "androidx.test.espresso:espresso-core:$espresso_version"
androidTestImplementation "androidx.test:runner:$test_runner_version"
Tried with multiple different version of testing dependencies, still getting same exception.
Could anyone help to resolve this issue to start instrumentation testing in Android studio ( Flamingo | 2022.2.1 ) ? Thanks