tests everywhere

38
Tests everywhere From unit testing to UI testing for Android

Upload: laura-morillo-velarde-rodriguez

Post on 11-Feb-2017

103 views

Category:

Mobile


0 download

TRANSCRIPT

Page 1: Tests everywhere

Tests everywhere

From unit testing to UI testing for Android

Page 2: Tests everywhere

★ @laura_morillo★ Software Developer at Cabify★ Tech&Ladies and AgileGirls organizer

Page 3: Tests everywhere

where do I start?

https://io2015codelabs.appspot.com/

Page 4: Tests everywhere

Android tests

UNIT TESTS(run on the JVM)

instrumentation tests

(Run on device or emulator)

Page 5: Tests everywhere

CONFIGURING UNIT TESTS1. 2.

3.

Page 6: Tests everywhere

Class to test

Page 7: Tests everywhere

TEST WIZARD

Page 8: Tests everywhere

TestCalculator.java

Page 9: Tests everywhere
Page 10: Tests everywhere

TestCalculator.java

Page 11: Tests everywhere

First Test ImplementationJUnit traditional assert methods

JUnit better assert method (with hamcrest!)

Page 12: Tests everywhere

Executing Unit Tests

or

Page 13: Tests everywhere

Checking test results (Android Studio)

Page 14: Tests everywhere

Checking test results (Console)

Page 15: Tests everywhere

Implementing the code

(That was easy!)

Page 16: Tests everywhere

And done!

Page 17: Tests everywhere

Configuring instrumentation tests (I)

Page 18: Tests everywhere

Configuring instrumentation tests (II)

Page 19: Tests everywhere

Configuring instrumentation tests (III)

Page 20: Tests everywhere

UI To test

Page 21: Tests everywhere

Activity Test

Page 22: Tests everywhere

Espresso test

Page 23: Tests everywhere

Espresso test: Step 1

Page 24: Tests everywhere

Espresso test: Step 2

Page 25: Tests everywhere

Espresso test: Step 3

Page 26: Tests everywhere

Espresso is powerfulWe can interact with views (onView)

We can interact with data adapters (onData)

Go back (pressBack)

Open menus (openActionBarOverflowOrOptionsMenu and openContextualActionModeOverflowMenu)

And check if the element is checked (isChecked), can be clicked (isClickable), is being displayed in the screen (isDisplayed)...

Image courtesy of jesadaphorn at FreeDigitalPhotos.net

Page 27: Tests everywhere

UI Testing is nice… but too

slow

Page 28: Tests everywhere
Page 29: Tests everywhere

So let’s do more JVM unit/Small test

Page 30: Tests everywhere

And we mock the android dependencies

Page 32: Tests everywhere

Services also need android without ui

Page 33: Tests everywhere

Services rule!

Page 34: Tests everywhere

But not all services rule!

IntentService

Page 35: Tests everywhere

Espresso IntentstestRule: Stubbing

Page 36: Tests everywhere

Espresso IntentstestRule: Verification

Page 37: Tests everywhere

SummaryWe have Unit tests (JVM) and Instrumentation Tests (Android Device)

Add Unit test as much as possible.

Add mocks for your dependencies when needed.

ActivityTestRule to test activities controlling their lifecycle.

ServiceTestRule to test Services controlling their lifecycle (but not valid for IntentService)

Espresso IntentsTestRule to handle activities and stub and verify intents

Test your UI with espresso

Check Google examples for more feature: https://github.com/googlesamples/android-testing

Page 38: Tests everywhere

Thank you!

Laura Morillo-Velarde@laura_morillo

[email protected]