Android Testing
Overview of Frameworks
The Testing Pyramid
- Unit: JUnit/Mockito (Fast, Local).
- Integration: Robolectric (JVM simulation).
- UI: Espresso/UIAutomator (Real Device/Emulator).
Unit Testing
- Focuses on logic in isolation.
- JUnit is the core engine.
- Mockito creates mock dependencies.
- Runs in seconds on your host machine.
Robolectric
- The JVM test framework.
- Simulates the Android SDK without a device.
- Great for testing lifecycle and resource loading without emulator overhead.
Espresso
- The native UI testing powerhouse.
- "Grey-box" testing (runs within the app process).
- Extremely low latency.
Espresso Sync
- Automatically waits for UI idle state.
- No more flaky `Thread.sleep()` calls.
- Ensures UI interactions happen when the app is ready.
UIAutomator
- "Black-box" testing framework.
- Tests across multiple app processes.
- Essential for testing System UI (notifications, settings).
Appium for Android
- WebDriver-based automation.
- Wraps UiAutomator2 driver.
- Best for cross-platform test suites.
Comparison Matrix
- Espresso: Fast, App-specific.
- UIAutomator: Cross-app, System.
- Appium: Multi-language, Cross-platform.
The Right Choice
- Build lean tests.
- Use Unit tests for logic.
- Use Espresso for app-specific UI.
- Use UIAutomator for system flows.
1 of 10