Test-Driven Development (TDD) and Refactoring (3 days)

Audience: programmers. Teaches you the agile practices of TDD and refactoring. Our most popular course! Learn TDD in Java, C#, C++, Ruby, or Python. C++ programmers: We now support C++11, so you can learn some of the new language features while learning TDD.

Class size: 10 students minimum, up to 20 maximum
Prerequisites: Six months professional programming experience
Please call +1-719-287-GEEK or  email us to schedule now or ask questions.
Pricing / Details

Test-driven development (TDD) is an essential programmer skill that allows developers to sustain a high-quality code base. Agile shops everywhere are learning the value of TDD in a fast-paced iterative development environment. But TDD isn't limited to agile shops--you'll find many benefits to using TDD in any environment.

In our most popular course, you'll obtain a solid foundation for doing test-driven development (TDD). You'll also learn the value of continual refactoring, a practice core to TDD and essential to sustaining your investment in your software. Lecture is brief, as we instead emphasize lots of hands-on coding exercises and demonstrations. You'll learn why we consider TDD a design technique, and how to increase the value of the tests you build.

We are usually able to provide exercises using your unit testing tool of choice, whether it be JUnit 3.x, JUnit 4.x, TestNG, RSpec, Test::Unit, CppUnit, CppUnit Lite, Tut, CppUTest, NUnit, or something else.

Topics Covered

Overview of Test-Driven Development
xUnit (tool) overview
Basic TDD technique - demo and exercises
TDD and design
Basic "mock" technique - demo and exercise
What's the next test? - group exercise
   Uncle Bob's TPP (overview)
Test smells - exercise
Refactoring and design
Refactoring drivers
   Code smells
   Simple design
   Classic design principles
Basic refactoring - demo and exercise
Additional catalog refactorings
Macro refactoring - demo and exercise
   Backing into tests
Additional mock topics - demos, exercises
   Mock organization (including self shunt)
   Mock injection (factory, override)
   Challenges with mocking
   When to use and not use
Writing tests for legacy code - exercises
Acceptance Tests (ATs) and TDD
Sustaining TDD

Pricing / Details