Android Espresso testing 'Cannot resolve symbol 'InstrumentationRegistry''-ThrowExceptions

Exception or error:

I’m trying to import

 import android.support.test.InstrumentationRegistry;

my build.gradle file

androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
androidTestCompile 'com.android.support.test:runner:0.2'
androidTestCompile 'com.android.support.test:rules:0.2'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'

in default config:

defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

Is there a library I’m missing here? I’m trying to import InstrumentationRegistry but it doesn’t recognise it!

How to solve:

Check what kind of test do you use.

InstrumentationRegistry used for Instrumented tests
that use emulator or device and they are placed in src/androidTest and use config androidTestCompile.
If you use Local unit tests for JVM from folder src/test you should use
config testCompile

testImplementation 'com.android.support.test:runner:1.0.2'

After that you can import InstrumentationRegistry, but you will get other errors at run-time.

###

try

compile ‘com.android.support.test:runner:0.2’

instead of

testCompile ‘com.android.support.test:runner:0.2’

###

it seems, com.android.support.test had been recently excluded from some other package (no clue which one), which also resulted in android.support.test.InstrumentationRegistryto be unknown; not excluding it from com.android.support.test:runner fixed the issue for me.

androidTestImplementation ("com.android.support.test:runner:1.0.2") {
    // exclude group: "com.android.support.test"
    exclude group: "com.android.support"
}

basically, androidTestImplementation needs to contain com.android.support.test once.

Leave a Reply

Your email address will not be published. Required fields are marked *