Before we start the setup process for Espresso for testing, it is recommended to turn off the following system settings on your virtual or physical device(s).
- On your device, under Settings->Developer options disable the following 3 settings:
- Window animation scale
- Transition animation scale
- Animator duration scale
Download Espresso
Make sure you have installed the latest Android Support Repository under Extras.
Open your app’s build.gradle file. This is usually not the top-level build.gradle file but app/build.gradle.
Add the following lines inside dependencies:
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' androidTestCompile 'com.android.support.test:runner:0.5'
Here is the list of few more artifacts available for Espresso.
// Espresso core androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' // Espresso-contrib for DatePicker, RecyclerView, Drawer actions, Accessibility checks, CountingIdlingResource androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.2' // Espresso-web for WebView support androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.2' // Espresso-idling-resource for synchronization with background jobs androidTestCompile 'com.android.support.test.espresso:espresso-idling-resource:2.2.2' // Espresso-intents for validation and stubbing of Intents androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.2'
Set the instrumentation runner
Add to the same build.gradle file the following line in android.defaultConfig:
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
Example build.gradle file
apply plugin: 'com.android.application' android { compileSdkVersion 25 buildToolsVersion "26.0.0" defaultConfig { applicationId "in.developersjournal.app" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } } dependencies { // App's dependencies, including test compile 'com.android.support:support-annotations:22.2.0' // Testing-only dependencies androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' }
Add the first test
Android Studio creates tests by default in src/androidTest/java/com.example.package/
androidTest is the location where Android uses Connected Tests. For more information please check out the following Getting Started with Android Testing.
Example JUnit4 test using Rules:
@RunWith(AndroidJUnit4.class) @LargeTest public class HelloWorldEspressoTest { @Rule public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule(MainActivity.class); @Test public void listGoesOverTheFold() { onView(withText("Hello world!")).check(matches(isDisplayed())); } }
Running tests in Android Studio
Create a test configuration
In Android Studio:
- Open Run menu -> Edit Configurations
- Add a new Android Tests configuration
- Choose a module
- Add a specific instrumentation runner:
android.support.test.runner.AndroidJUnitRunner
Run the newly created configuration.
From command-line via Gradle
Execute
./gradlew connectedAndroidTest