TDD in C++

Join this hands-on workshop to learn how to  do incremental design with TDD while taking advantage of the strengths of C++. The two days will be interactive, featuring lots of exercises with feedback from the trainer, discussions and lectures on the theoretical topics.

Why TDD?

Test Driven Development (TDD) is a tool for obtaining simple & flexible designs in an incremental way. TDD can help you:

  • if you work in an environment where requirements change often and you need to implement them as fast as possible.
  • if you want to keep your skills up to date with the industry trends
  • if you want to learn more about design

What’s special about TDD in C++?

C++ is a complex language, allowing developers to take advantage of power and effectiveness of the system. Unfortunately, refactoring and writing tests is more complicated in C++ because there are less tools for it than for Java or C#. We therefore need to learn how to effectively refactor and how to write tests in the given context.

You will need a laptop with the development environment for C++ installed and working. It is highly recommended to have git (msysgit for Windows) installed.

Who this course is for

Software C++ developers

Learning outcomes for this course

  • What TDD is about
  • The real TDD cycle
  • How to start doing TDD on a new system
  • How to figure out the tests you need to write: behavior slicing
  • How to write tests so that your system is correct every 5-15 minutes
  • How to use refactoring to emerge designs

Depending on the audience, we might discuss:

  •  How to use stubs and mocks to isolate tests
  • How to test an arbitrarily large system effectively
  • Basics of dealing with legacy code
  • Architecture and TDD – when does architecture end and when does design start?

This course will not teach you how to use TDD on an existing system. We might discuss it for a short while, but we won’t get into details. If you would like to attend such a course, ask us for the legacy code workshop.

You will receive the slides and code samples after the course ends. The trainer will also recommend you learning resources – trainings, books, blogs etc. – to help you continue learning after the course ends.


For best results, you should be a software developer who can easily write C++ programs containing: concrete and abstract classes, inheritance, pointers and reference types.


This course has already been held.