android tdd

58
Android TDD January 25, 2012 Chuck Greb @ecgreb

Upload: chuck-greb

Post on 06-May-2015

671 views

Category:

Technology


4 download

DESCRIPTION

A discussion about unit testing strategies and test-driven development on the Android platform including: * Unit Testing & TDD Overview * Android Testing Framework * JUnit 4 + POJO Library * Robolectric

TRANSCRIPT

Page 1: Android TDD

Android TDDJanuary 25, 2012

Chuck Greb @ecgreb

Page 2: Android TDD

Why Test?

Page 3: Android TDD

Validate Requirements

Page 4: Android TDD

Ensure Quality

Page 5: Android TDD

Reduce Cost

Page 6: Android TDD

Why Unit Test?

Page 7: Android TDD

Test smallest possible units of code(in isolation)

Page 8: Android TDD

Makes refactoring easier(regression suite)

Page 9: Android TDD

Self-documenting code

Page 10: Android TDD

Fakes

Mocks

Stubs

Page 11: Android TDD

Why TDD?

(Test-Driven Development)

Page 12: Android TDD

Improves Architecture

Page 13: Android TDD

Reduced debugging time

Page 14: Android TDD

Red -> Green -> Refactor

Page 15: Android TDD

Tests must be fast!

Page 16: Android TDD

Other kinds of tests?

Page 17: Android TDD

Inverted Testing Pyramid

Page 18: Android TDD

(Un-Inverted) Testing Pyramid

Page 19: Android TDD

QA Job Security

Page 20: Android TDD

Unit Testing is

Awesome!!

Page 21: Android TDD

Testing Approaches● F@#% It!● Manual● Monkey Testing● Android Testing Framework● JUnit 4 + POJOs● Robolectric● Custom

Page 22: Android TDD

Testing Approaches● F@#% It!● Manual● Monkey Testing● Android Testing Framework● JUnit 4 + POJOs● Robolectric● Custom

Page 23: Android TDD

Android Testing Framework

Page 24: Android TDD

JUnit 3 + Instrumentation

Page 25: Android TDD

Android Testing Framework

Page 26: Android TDD

Test Case Classes● TestCase● AndroidTestCase● ActivityTestCase● ActivityUnitTestCase● ServiceTestCase● ProviderTestCase2● ActivityInstrumentationTestCase2

Page 27: Android TDD

Android Mocks

Page 28: Android TDD

HelloAndroidActivity

Page 29: Android TDD

main.xml

Page 30: Android TDD

StringBling

Page 31: Android TDD
Page 32: Android TDD

HelloAndroidActivityTest

Page 33: Android TDD

Success!!!

Page 34: Android TDD

Compile, dex, package, and install two APKs on emulator or device

Page 35: Android TDD

Additional Challenges

● Classes and methods declared final● Lack of interfaces● Non-public constructors● Static methods

Page 36: Android TDD

JUnit 4 + POJOs

Page 37: Android TDD

HelloAndroidActivityJUnitTest

Page 38: Android TDD
Page 39: Android TDD

StringBling

Page 40: Android TDD

StringBlingTest

Page 41: Android TDD

Success!!!

Page 42: Android TDD

But we want to testALL our code

Page 43: Android TDD

Robolectric

Page 44: Android TDD

RobolectricTest-Drive Your Android Code

Page 45: Android TDD

Shadow ObjectsShadow Objects

Page 46: Android TDD

Shadow Objects in Action

Page 47: Android TDD

View and Resource Loading

Page 48: Android TDD

HelloAndroidActivityRobolectricTest

Page 49: Android TDD

Success!!!

Page 50: Android TDD

More fun with Shadows

Page 51: Android TDD

Using ShadowImageView

Page 52: Android TDD

Using ShadowActivity

Page 53: Android TDD

Write your owncustom shadows

Page 54: Android TDD

Contribute to Robolectric

Page 55: Android TDD

Resources

● developer.android.com/guide/topics/testing● junit.org● pivotal.github.com/robolectric

Page 56: Android TDD

Reading

● Robert C. Martin (Uncle Bob)● Michael Feathers● Kent Beck

Page 57: Android TDD

Find your testing Zen

Page 58: Android TDD

Chuck Greb @ecgreb

http://ecgreb.com/bloghttps://github.com/ecgreb/StringBling