last tdd patterns · 2015. 2. 25. · last tdd patterns ... tdd.$$
Android TDD
-
Upload
chuck-greb -
Category
Technology
-
view
679 -
download
4
description
Transcript of Android TDD
![Page 1: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/1.jpg)
Android TDDJanuary 25, 2012
Chuck Greb @ecgreb
![Page 2: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/2.jpg)
Why Test?
![Page 3: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/3.jpg)
Validate Requirements
![Page 4: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/4.jpg)
Ensure Quality
![Page 5: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/5.jpg)
Reduce Cost
![Page 6: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/6.jpg)
Why Unit Test?
![Page 7: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/7.jpg)
Test smallest possible units of code(in isolation)
![Page 8: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/8.jpg)
Makes refactoring easier(regression suite)
![Page 9: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/9.jpg)
Self-documenting code
![Page 10: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/10.jpg)
Fakes
Mocks
Stubs
![Page 11: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/11.jpg)
Why TDD?
(Test-Driven Development)
![Page 12: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/12.jpg)
Improves Architecture
![Page 13: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/13.jpg)
Reduced debugging time
![Page 14: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/14.jpg)
Red -> Green -> Refactor
![Page 15: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/15.jpg)
Tests must be fast!
![Page 16: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/16.jpg)
Other kinds of tests?
![Page 17: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/17.jpg)
Inverted Testing Pyramid
![Page 18: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/18.jpg)
(Un-Inverted) Testing Pyramid
![Page 19: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/19.jpg)
QA Job Security
![Page 20: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/20.jpg)
Unit Testing is
Awesome!!
![Page 21: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/21.jpg)
Testing Approaches● F@#% It!● Manual● Monkey Testing● Android Testing Framework● JUnit 4 + POJOs● Robolectric● Custom
![Page 22: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/22.jpg)
Testing Approaches● F@#% It!● Manual● Monkey Testing● Android Testing Framework● JUnit 4 + POJOs● Robolectric● Custom
![Page 23: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/23.jpg)
Android Testing Framework
![Page 24: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/24.jpg)
JUnit 3 + Instrumentation
![Page 25: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/25.jpg)
Android Testing Framework
![Page 26: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/26.jpg)
Test Case Classes● TestCase● AndroidTestCase● ActivityTestCase● ActivityUnitTestCase● ServiceTestCase● ProviderTestCase2● ActivityInstrumentationTestCase2
![Page 27: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/27.jpg)
Android Mocks
![Page 28: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/28.jpg)
HelloAndroidActivity
![Page 29: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/29.jpg)
main.xml
![Page 30: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/30.jpg)
StringBling
![Page 31: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/31.jpg)
![Page 32: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/32.jpg)
HelloAndroidActivityTest
![Page 33: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/33.jpg)
Success!!!
![Page 34: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/34.jpg)
Compile, dex, package, and install two APKs on emulator or device
![Page 35: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/35.jpg)
Additional Challenges
● Classes and methods declared final● Lack of interfaces● Non-public constructors● Static methods
![Page 36: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/36.jpg)
JUnit 4 + POJOs
![Page 37: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/37.jpg)
HelloAndroidActivityJUnitTest
![Page 38: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/38.jpg)
![Page 39: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/39.jpg)
StringBling
![Page 40: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/40.jpg)
StringBlingTest
![Page 41: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/41.jpg)
Success!!!
![Page 42: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/42.jpg)
But we want to testALL our code
![Page 43: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/43.jpg)
Robolectric
![Page 44: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/44.jpg)
RobolectricTest-Drive Your Android Code
![Page 45: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/45.jpg)
Shadow ObjectsShadow Objects
![Page 46: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/46.jpg)
Shadow Objects in Action
![Page 47: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/47.jpg)
View and Resource Loading
![Page 48: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/48.jpg)
HelloAndroidActivityRobolectricTest
![Page 49: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/49.jpg)
Success!!!
![Page 50: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/50.jpg)
More fun with Shadows
![Page 51: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/51.jpg)
Using ShadowImageView
![Page 52: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/52.jpg)
Using ShadowActivity
![Page 53: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/53.jpg)
Write your owncustom shadows
![Page 54: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/54.jpg)
Contribute to Robolectric
![Page 55: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/55.jpg)
Resources
● developer.android.com/guide/topics/testing● junit.org● pivotal.github.com/robolectric
![Page 56: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/56.jpg)
Reading
● Robert C. Martin (Uncle Bob)● Michael Feathers● Kent Beck
![Page 57: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/57.jpg)
Find your testing Zen
![Page 58: Android TDD](https://reader033.fdocuments.net/reader033/viewer/2022052321/554a1c9eb4c905825d8b5441/html5/thumbnails/58.jpg)
Chuck Greb @ecgreb
http://ecgreb.com/bloghttps://github.com/ecgreb/StringBling