Cannot resolve symbol InstantTaskExecutorRule

AndroidUnit TestingJunit4Rx Java2

Android Problem Overview


I open example code BasicRxJavaSample (from this article Room+RxJava) The main thing is there:

@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = 
    new InstantTaskExecutorRule();

And BasicRxJavaSample is all ok. But I can not apply this in my test. That's what's going on:

Cannot resolve symbol InstantTaskExecutorRule

enter image description here

And manual import does not work:

enter image description here

My autocompletion works like this enter image description here

But should be so

enter image description here

My app build.gradle (full gradle here):

// tests
testImplementation 'junit:junit:4.12'
androidTestCompile "com.android.support:support-annotations:$supportVersion"
testImplementation "android.arch.core:core-testing:$archVersion"
// Test helpers for Room
testImplementation "android.arch.persistence.room:testing:1.0.0"
// https://github.com/mockito/mockito
testImplementation 'org.mockito:mockito-core:2.13.0'
androidTestImplementation 'org.mockito:mockito-android:2.13.0'
// AndroidJUnitRunner and JUnit Rules
androidTestImplementation 'com.android.support.test:rules:1.0.1'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
// https://developer.android.com/topic/libraries/testing-support-library/packages.html
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
androidTestCompile 'com.android.support.test.espresso:espresso-idling-resource:3.0.1'

Android Solutions


Solution 1 - Android

Replace testImplementation by androidTestImplementation. So the tests on folder androidTest can have access to the library.

dependencies {
    androidTestImplementation "androidx.arch.core:core-testing:2.1.0"
}

> If you are not using androidx then use android.arch.core:core-testing:1.1.1

Solution 2 - Android

I know it's late but I would like to add one thing to this accepted answer.

If you want to use,

@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = 
new InstantTaskExecutorRule();

in your JUnit test case, i.e., in test folder then use following dependency, i.e, with testImplementation

dependencies {
testImplementation "android.arch.core:core-testing:1.0.0"
}

If you want to use InstantTaskExecutorRule for your UI or integration test cases(androidTest folder), use androidTestImplementation. that is:

androidTestImplementation "android.arch.core:core-testing:1.0.0"

And if you want to add for both, use androidTestImplementation & testImplementation that is:

androidTestImplementation "android.arch.core:core-testing:1.0.0"

testImplementation "android.arch.core:core-testing:1.0.0"

For Android-X use below dependency:

androidTestImplementation 'androidx.arch.core:core-testing:2.0.0'

OR

testImplementation 'androidx.arch.core:core-testing:2.0.0'

Solution 3 - Android

for androidX migration, add

androidTestImplementation "androidx.arch.core:core-testing:2.0.0"

Solution 4 - Android

Please put this two dependencies in your gradle file,

dependencies {

    // Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:1.0.0"

    // Test helpers for Room
    testImplementation "android.arch.persistence.room:testing:1.0.0"
}

Further information please go through this link, Android Architecture components integration guide

Solution 5 - Android

dependencies {
    testImplementation "androidx.arch.core:core-testing:2.1.0"
}

Solution 6 - Android

I think that there is a conflict in some of the linked libraries. I got around this, I used blockingGet() and blockingFirst().

and, in the end, I used https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator

androidTestUtil 'com.android.support.test:orchestrator:1.0.1'

this is what you need!

Solution 7 - Android

Sometimes test dependency issues can be an issue of selecting the appropriate build variant, depending on your Gradle configuration. In my case, tests are configured for the debug build variant only.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questiontim4devView Question on Stackoverflow
Solution 1 - AndroidPaulo PereiraView Answer on Stackoverflow
Solution 2 - AndroidKavita PatilView Answer on Stackoverflow
Solution 3 - AndroidAbhilash DasView Answer on Stackoverflow
Solution 4 - AndroidFenil PatelView Answer on Stackoverflow
Solution 5 - AndroidSquall HuangView Answer on Stackoverflow
Solution 6 - Androidtim4devView Answer on Stackoverflow
Solution 7 - Androidcaitcoo0odesView Answer on Stackoverflow