Learn Test Driven Development in Java
-
Upload
fluentsoftware -
Category
Technology
-
view
136 -
download
11
description
Transcript of Learn Test Driven Development in Java
![Page 1: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/1.jpg)
Test Driven Developmentin Java
Wednesday, 14 November 12
![Page 2: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/2.jpg)
About me!
Matthew Todd [email protected]
@matthew_todd
Working with developers, continuously improving agile practice
Wednesday, 14 November 12
![Page 3: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/3.jpg)
What is TDD?
Wednesday, 14 November 12
![Page 4: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/4.jpg)
Testing timeline
1989: First tests on punchcards
1994: Kent Beck creates SUnit test framework
1995: TDD Demo
1999: Extreme programming explained published
2000: JUnit.org launched
Wednesday, 14 November 12
![Page 5: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/5.jpg)
Manifesto for Agile Software DevelopmentWe are uncovering better ways of developingsoftware by doing it and helping others do it.Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentationCustomer collaboration over contract negotiation
Responding to change over following a planThat is, while there is value in the items on
the right, we value the items on the left more
Wednesday, 14 November 12
![Page 6: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/6.jpg)
Wednesday, 14 November 12
![Page 7: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/7.jpg)
Test spectrum
Single function test
Full system test
Automated integration/acceptance
Unit test
Testing in concert
Component test
Wednesday, 14 November 12
![Page 8: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/8.jpg)
1. Write test
Wednesday, 14 November 12
![Page 9: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/9.jpg)
2. Test fails!
1. Write test
Wednesday, 14 November 12
![Page 10: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/10.jpg)
2. Test fails!
1. Write test
3. Write code
Wednesday, 14 November 12
![Page 11: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/11.jpg)
2. Test fails!
1. Write test
3. Write code
4. Test passes!
Wednesday, 14 November 12
![Page 12: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/12.jpg)
2. Test fails!
1. Write test
3. Write code
4. Test passes!
5. Refactor
Wednesday, 14 November 12
![Page 13: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/13.jpg)
2. Test fails!
1. Write test
3. Write code
4. Test passes!
5. Refactor
Wednesday, 14 November 12
![Page 14: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/14.jpg)
Why TDD?
Wednesday, 14 November 12
![Page 15: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/15.jpg)
Proactive VS Reactive
Seek out problems early on
Validate requirements
Validate code
Test late
Only respond to defects
Focused on debugging
Wednesday, 14 November 12
![Page 16: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/16.jpg)
Unit test Live system
Time
Cost
Relative cost of change
Wednesday, 14 November 12
![Page 17: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/17.jpg)
RequirementsDrive out requirements issues early
Wednesday, 14 November 12
![Page 18: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/18.jpg)
Rapid feedbackMany small changes VS One Big Change™
Wednesday, 14 November 12
![Page 19: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/19.jpg)
CollaborationEnables developers to work together
Wednesday, 14 November 12
![Page 20: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/20.jpg)
Values refactoringRefactor often to lower impact and risk
Wednesday, 14 November 12
![Page 21: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/21.jpg)
Design to testTesting driving good design practice
Wednesday, 14 November 12
![Page 22: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/22.jpg)
Tests as informationDocumenting decisions and assumptions
Wednesday, 14 November 12
![Page 23: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/23.jpg)
Sounds great!So show me
Wednesday, 14 November 12
![Page 24: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/24.jpg)
So, let’s get started
Wednesday, 14 November 12
![Page 25: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/25.jpg)
Reverse polish calculator3 4 +
Wednesday, 14 November 12
![Page 26: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/26.jpg)
Calculator walkthrough
Wednesday, 14 November 12
![Page 27: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/27.jpg)
Reverse polish calculatorDeveloped using a test driven approach
Wednesday, 14 November 12
![Page 28: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/28.jpg)
“sounds simple, but what about real applications?”
Wednesday, 14 November 12
![Page 29: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/29.jpg)
“sounds simple, but what about real applications?”
Wednesday, 14 November 12
![Page 30: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/30.jpg)
“sounds simple, but what about real applications?”
Wednesday, 14 November 12
![Page 31: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/31.jpg)
SOLID
Wednesday, 14 November 12
![Page 32: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/32.jpg)
Single responsibilityOLID
Wednesday, 14 November 12
![Page 33: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/33.jpg)
Wednesday, 14 November 12
![Page 34: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/34.jpg)
Wednesday, 14 November 12
![Page 35: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/35.jpg)
SOpen/ClosedLID
Wednesday, 14 November 12
![Page 36: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/36.jpg)
Wednesday, 14 November 12
![Page 37: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/37.jpg)
Wednesday, 14 November 12
![Page 38: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/38.jpg)
SOLiskov SubstitutionID
Wednesday, 14 November 12
![Page 39: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/39.jpg)
Wednesday, 14 November 12
![Page 40: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/40.jpg)
SOLInterface segregationD
Wednesday, 14 November 12
![Page 41: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/41.jpg)
Wednesday, 14 November 12
![Page 42: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/42.jpg)
Wednesday, 14 November 12
![Page 43: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/43.jpg)
SOLIDependency inversion
Wednesday, 14 November 12
![Page 44: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/44.jpg)
Wednesday, 14 November 12
![Page 45: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/45.jpg)
Wednesday, 14 November 12
![Page 46: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/46.jpg)
Isolating dependencies
Test target
Dependency
Test double
x
Test
Wednesday, 14 November 12
![Page 47: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/47.jpg)
Test DoublesFakes MocksStubs
Wednesday, 14 November 12
![Page 48: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/48.jpg)
Test DoublesFakes MocksStubs
Wednesday, 14 November 12
![Page 49: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/49.jpg)
Providing state-based verificationStubs
Wednesday, 14 November 12
![Page 50: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/50.jpg)
Test DoublesFakes MocksStubs
Wednesday, 14 November 12
![Page 51: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/51.jpg)
FakesProviding simplified replacements
Wednesday, 14 November 12
![Page 52: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/52.jpg)
Test DoublesFakes MocksStubs
Wednesday, 14 November 12
![Page 53: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/53.jpg)
MocksProviding behaviour based verification
Wednesday, 14 November 12
![Page 54: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/54.jpg)
Stubs Assertions made directly in test methodFakes
Mocks Assertions made by mock object
Wednesday, 14 November 12
![Page 55: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/55.jpg)
Test double demonstration
Wednesday, 14 November 12
![Page 56: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/56.jpg)
Mock frameworks
Wednesday, 14 November 12
![Page 57: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/57.jpg)
Wednesday, 14 November 12
![Page 58: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/58.jpg)
Wednesday, 14 November 12
![Page 59: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/59.jpg)
Test balanceConsider mock frameworks where appropriate
Wednesday, 14 November 12
![Page 60: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/60.jpg)
Dealing with the legacy
Wednesday, 14 November 12
![Page 61: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/61.jpg)
Dealing with the legacySomeone else’s code? No interfaces?
Code we cannot change
Wednesday, 14 November 12
![Page 62: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/62.jpg)
So, now we can test it!
Wednesday, 14 November 12
![Page 63: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/63.jpg)
So, now we can test it!What makes a good test?
Wednesday, 14 November 12
![Page 64: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/64.jpg)
Test principles
Wednesday, 14 November 12
![Page 65: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/65.jpg)
FIRST
Wednesday, 14 November 12
![Page 66: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/66.jpg)
FastIRST
Wednesday, 14 November 12
![Page 67: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/67.jpg)
FIndependentRST
Wednesday, 14 November 12
![Page 68: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/68.jpg)
FIRepeatableST
Wednesday, 14 November 12
![Page 69: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/69.jpg)
FIRSelf-validatingT
Wednesday, 14 November 12
![Page 70: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/70.jpg)
FIRSTimely
Wednesday, 14 November 12
![Page 71: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/71.jpg)
TDD Anti-patterns
Wednesday, 14 November 12
![Page 72: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/72.jpg)
Anti-pattern: the singleton
Wednesday, 14 November 12
![Page 73: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/73.jpg)
Anti-pattern: the singleton
Who uses this singleton?
Who owns this singleton?
What behaviours does it provide?
Wednesday, 14 November 12
![Page 74: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/74.jpg)
Anti-pattern: create the world
@Before public void initialiseTests() { loadBalancer = createMockLoadBalancingService(); server1 = createMockServer(); server2 = createMockServer(); loadBalancer.addServer(server1); loadBalancer.addServer(server2); dbEngine = new DBEngine(); dbEngine.addTable("users"); dbEngine.addTable("profiles"); dbEngine.addTable("posts"); userProfileService = new Mock<UserProfileServer>(); adminUser = new User("admin",true); user1 = new User("alice",false); user2 = new User("bob",false); userProfileService.register(user1); userProfileService.register(user2); user1.connectWith(user2); ...
Wednesday, 14 November 12
![Page 75: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/75.jpg)
Anti-pattern: create the world
Test burden increases over time
Test complexity increases
Often a sign of application complexity
Wednesday, 14 November 12
![Page 76: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/76.jpg)
Anti-pattern: completely mocked
@Test public void testingNothing() { MockServiceFactory factory = new MockServiceFactory(); Mock<UserService> userService = new Mock<UserService>(); factory.add(userService); User user = new User("bob"); userService.add(user); assertEquals("bob",userService.getUsers()[0].name()); }
Wednesday, 14 November 12
![Page 77: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/77.jpg)
Test boundariesClass(es) under test Out of test scope
Wednesday, 14 November 12
![Page 78: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/78.jpg)
Anti-pattern: exceptional test
@Test public void testUserCreation() { userService.createUser("bob"); }
Wednesday, 14 November 12
![Page 79: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/79.jpg)
Anti-pattern: exceptional test
Good coverage, but poor validation
@Test public void testUserCreation() { userService.createUser("bob"); }
Wednesday, 14 November 12
![Page 80: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/80.jpg)
Anti-pattern: usually passes
com.example.UncertainTest
com.example.UncertainTest
com.example.UncertainTest
com.example.UncertainTest
com.example.UncertainTest
Wednesday, 14 November 12
![Page 81: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/81.jpg)
Anti-pattern: usually passes
We need to be able to trust our tests
Control threading and access to resources
Wednesday, 14 November 12
![Page 82: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/82.jpg)
Anti-pattern: one big test
@Test public void testEverything() { userService.createUser("alice"); assertEquals(1,userService.getUserCount()); userService.createUser("alice"); assertEquals(1,userService.getUserCount()); userService.createUser("bob"); assertEquals(2,userService.getUserCount()); userService.dropUser("alice"); assertEquals(1,userService.getUserCount()); User bob = userService.getUser("bob"); assertNotNull(bob); ...
Wednesday, 14 November 12
![Page 83: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/83.jpg)
Anti-pattern: one big test
testEverything
testUserCreation
testCreatingDuplicateUser
testDroppingUser
Wednesday, 14 November 12
![Page 84: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/84.jpg)
Anti-pattern: the slow test
Wednesday, 14 November 12
![Page 85: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/85.jpg)
Anti-pattern: the slow test
Should be quick to pass
Should be quick to fail
Run frequently
Wednesday, 14 November 12
![Page 86: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/86.jpg)
Anti-pattern: second-class test
@Test public void whoKnowsWhatThisTests() { createTestObjects(); testUser.setName("alice"); setupTestDependencies(); User user2 = new User("user2"); setupUser(user2); testManager.add(testUser); ... test(user2); }
Wednesday, 14 November 12
![Page 87: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/87.jpg)
Applying TDD
Wednesday, 14 November 12
![Page 88: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/88.jpg)
When not to use TDD!
Wednesday, 14 November 12
![Page 89: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/89.jpg)
TDD
BDDIntegration testing
Design
Continuous delivery
Manual testing
User stories
Wednesday, 14 November 12
![Page 90: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/90.jpg)
Practice practice practice
Wednesday, 14 November 12
![Page 91: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/91.jpg)
TDD Kata
Wednesday, 14 November 12
![Page 92: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/92.jpg)
TDD Kata roman numerals1 - convert text from normal numerals ->
Roman numerals
2 - convert in the other direction too
Wednesday, 14 November 12
![Page 93: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/93.jpg)
TDD Kata FizzBuzz
printing numbers from 1 to 100
..but multiples of 3 should print Fizzmultiples of 5 should print Buzzmultiples of 3 and 5 print FizzBuzz
1 2 Fizz 4 Buzz Fizz 7 ...
Wednesday, 14 November 12
![Page 94: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/94.jpg)
TDD Kata roman calculatorcalculator only accepting roman numerals as
input and output
I + III = IV
Wednesday, 14 November 12
![Page 95: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/95.jpg)
TDD Kata tennisimplement simple tennis game
http://en.wikipedia.org/wiki/Tennis#Scoring
Wednesday, 14 November 12
![Page 96: Learn Test Driven Development in Java](https://reader031.fdocuments.net/reader031/viewer/2022020716/54c7a6cc4a7959b9098b4575/html5/thumbnails/96.jpg)
Thank you!
Wednesday, 14 November 12