Unless developers are trained about which tests to write, how to write them, when to refactor code, and the techniques for breaking dependencies, testing can become unsustainable as projects mature. We teach how to make Test-Driven Development sustainable with a focus on deriving maximum value (technical and business) from minimal effort and cost.


How TDD relates to ATDD, emergent design, SOLID design principles, and design patterns are also included.


Course Objectives: 

This course teaches participants the sustainable approach to Test-Driven Development. The practice of Test-Driven Development, which utilizes Refactoring and Unit Testing in a particularly fine-grained way, is demonstrated. Hands-on TDD coding will dominate throughout.


Learning Objectives: 

In this course, you will learn:

  • Why and how to be "test-driven"

  • How to analyze requirements to obtain better tests

  • How to write unit tests

  • How to use mock objects

  • How to refactor legacy code

  • How to use an XUnit testing framework (Junit, MSTest, or Jest)

  • A variety of refactoring techniques, with hands-on exercises to solidify this knowledge


Day 1: Techniques

  • A brief overview of the motivations behind Agility, and TDD specifically

  • As a group, we all get the testing framework up and running on all needed machines.

  • Review Code Qualities, and how they relate to Testing and Testability

  • Unit-testing in general, leading to the benefits of TDD

  • A small Unit-testing/TDD exercise


Day 2: Design

  • Mock Objects, with an exercise

  • Code Smells, and Refactoring

  • Refactoring to the open-closed, just in time design

  • Legacy code refactoring exercise and debrief


Day 3: Reality

  • TDD and Design, revisiting the exercise from Day 1

  • TDD and Design, putting it all together. This includes a larger hands-on lab project.

Full Description

Tell people more about the services you offer. Use this repeating layout to display content. It’s an easy way to keep your customers up to date with what’s happening. Want to make this content your own? Simple drag and drop elements like text, images and links, or connect to data from your collection.


Participants should have a solid background in object-orientation, an object-oriented language such as Java, C#, or C++, and UML.

Participants should be familiar with Code Qualities and the Advice from the Gang of Four.

Max class size



3 Days




Sustainable Test-Driven Development