This hands-on advanced workshop teaches incremental Test-Driven Development, showing how to grow code one feature at a time. It will show: how to use tests at multiple levels to focus on requirements, how to use unit tests to drive the discovery of roles and responsibilities in your design; and how to write resilient tests that express your intent and don’t break for irrelevant changes.
The workshop is for programmers who want to improve their TDD practice. It has been presented at several conferences, one review from XpDay London was “Incredibly useful; the best technical I’ve heard”.
One of the barriers to wider adoption of TDD is that it is best taught from within a team, and the technical challenges of writing tests frequently thwart those looking to teach themselves. This session will be a live demonstration of Test Driven Development in Java, using Eclipse and JUnit, aimed at those new to TDD and looking to learn. Audience members will be encouraged to follow along on their own laptops as we walk through common scenarios that frequently discourage new TDDers, and demonstrate some techniques for overcoming them in a live coding session.
Continuous Testing (CT) is a developer practice that shortens the feedback loop established by Test Driven Development. It gives you near instant feedback about the correctness of your code, and helps you find bugs as quickly as syntax errors. This session will cover how CT has evolved in the last year, it’s current capabilities, and limitations. The presenters will also show several demos of the practice using freely available continuous testing tools, and examine how these tools can be integrated with existing infrastructure to bring the benefits of CT to a wider audience.
There are quite a few good tools available for developers who are interested in writing more expressive tests. These cover a broad spectrum from unit testing and mocking frameworks to executable requirements platforms. But sometimes in our excitement for learning new tools we overlook the most useful tool of all…the language features of our chosen programming language. In this session we will get back to basics by exploring how you can write more expressive tests using the language features of Java, the framework features of JUnit, and the practice of Behavior Driven Development.