Why can't I import AndroidJUnit4 and ActivityTestRule into my unit test class?

Add these in the newer version:

androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'

There are two different types of tests you can set up in Android

Unit Tests

  • These run directly on the JVM and do not have access to the Android framework classes.
  • They are kept in the test/java package
  • Dependencies need to added in the build.gradle file with the command testCompile
  • You generally use Mockito, Robolectric & JUnit for these tests

Instrumentation Tests

  • These run on an Android emulator and have full access to all the Android classes
  • They are kept in the androidTest/java package
  • Dependencies need to be added to build.gradle with androidTestCompile
  • You generally use Espresso and JUnit for these tests

From what I can tell you are trying to write instrumentation tests with Espresso but have your test in the test/java package which is for unit tests. In that case you need to move your test class to the androidTest/java package.


If you migrated to AndroidX, use this:

androidTestImplementation 'androidx.test:rules:1.4.0'
androidTestImplementation 'androidx.test:runner:1.4.0'

Adding:

androidTestImplementation 'com.android.support.test:rules:1.0.2'

solves problem, but don't forget to sync the project with gradle files. Only then the changes will take effect.