Use Espresso to write concise, beautiful, and reliable Android UI tests.
The following code snippet shows an example of an Espresso test:
Kotlin
@Test fun greeterSaysHello() { onView(withId(R.id.name_field)).perform(typeText("Steve")) onView(withId(R.id.greet_button)).perform(click()) onView(withText("Hello Steve!")).check(matches(isDisplayed())) }
Java
@Test public void greeterSaysHello() { onView(withId(R.id.name_field)).perform(typeText("Steve")); onView(withId(R.id.greet_button)).perform(click()); onView(withText("Hello Steve!")).check(matches(isDisplayed())); }
The core API is small, predictable, and easy to learn and yet remains open for customization. Espresso tests state expectations, interactions, and assertions clearly without the distraction of boilerplate content, custom infrastructure, or messy implementation details getting in the way.
Espresso tests run optimally fast! It lets you leave your waits, syncs, sleeps, and polls behind while it manipulates and asserts on the application UI when it is at rest.
Target audience
Espresso is targeted at developers, who believe that automated testing is an integral part of the development lifecycle. While it can be used for black-box testing, Espresso’s full power is unlocked by those who are familiar with the codebase under test.
Synchronization capabilities
Each time your test invokes
onView()
,
Espresso waits to perform the corresponding UI action or assertion until the
following synchronization conditions are met:
- The message queue doesn't have any messages that Espresso needs to immediately process.
- There are no instances of
AsyncTask
currently executing a task. - All developer-defined idling resources are idle.
By performing these checks, Espresso substantially increases the likelihood that only one UI action or assertion can occur at any given time. This capability gives you more reliable and dependable test results.
Packages
espresso-core
- Contains core and basicView
matchers, actions, and assertions. See Basics and Recipes.espresso-web
- Contains resources forWebView
support.espresso-idling-resource
- Espresso's mechanism for synchronization with background jobs.espresso-contrib
- External contributions that containDatePicker
,RecyclerView
andDrawer
actions, accessibility checks, andCountingIdlingResource
.espresso-intents
- Extension to validate and stub intents for hermetic testing.espresso-remote
- Location of Espresso's multi-process functionality.
You can learn more about the latest versions by reading the release notes.
Additional resources
For more information about using Espresso in Android tests, consult the following resources.
Samples
- Espresso Code Samples includes a full selection of Espresso samples.
- BasicSample: Basic Espresso sample.
- (more...)