This is the recording of my talk Practicing Advanced Unit Testing with the TCG Kata from Agile Saturday X in Tallinn, Estonia on 15th February 2014.
Doing Code Katas alone or in a Dojo can help sharpen our elementary skills as software developers. Practicing IDE shortcuts and TDD mini-step cycles is very useful for the daily business, yet I find some existing Code Katas too far away from real-life programming situations. That’s why I came up with the Trading Card Game Kata – which is (very loosely) based on Blizzard Entertainment’s free-to-play online-game “Hearthstone – Heroes of Warcraft”. This Kata is focused on practicing TDD in a slightly more complex (but not complicated) situation where you might have to think about rules like Single Responsibility Principle or Command Query Separation and might even feel the urge to use a Mocking framework at some point.
First I will introduce the ideas of Katas and Dojos in general and explain the TCG Kata rules to you. Then I will demo some real-life best-practices for writing good developer tests, using my TCG Kata sample solution as a showcase. This will include:
- Picking the right Test Double
- Test Data Builders
- Behavior Tests with BDDMockito
- Prose-like Assertions with Hamcrest
- Readability Sugar
The full Kata ruleset and a sample solution in Java 8 can be found on https://github.com/bkimminich/kata-tcg.
These are the slides to my “Agile Software Development in Practice” lectures. They are intended especially for Software Development students but have also partially been used in inhouse Clean Code developer trainings.
The following topics are covered:
- most aspects of Agile Methodology from Pair Programming to Collective Code Ownership
- Clean Code based on Robert C. Martins work
- Test Driven Development
- advanced Unit Testing techniques like Mockito mocks and Hamcrest matchers
The deck is divided into 9 lectures which each consist of a theoretical part and a practical excercise for the students. Included are building a Mars Station from building blocks (using agile methods and SCRUM roles), Uncle Bobs famous Bowling Game Code Kata and a smallscale Code Retreat.
Accompanying source code and examples can be found on https://github.com/bkimminich/AgileSoftwareDevelopmentInPractice