I am a fan of Boost.Test. As a habbit, I organize my code this way: // file: Foo.h Class foo { // implementations }; #ifdef ENABLE_TEST namespace test_cases { BOOST_AUTO_TEST_CASE(foo_tests) { // test predicates of class foo } } //namespace test_cases #endif //end of file Foo.h With this structure, I can always carry test cases with any class I write, I just need to copy the file around. When I need to test it there is a universal test main.cpp //File test_main.cpp #define BOOST_TEST_MAIN #include <boost/test/unit_test.hpp> #define ENABLE_TEST #include "foo.h" //#include other includes //End of File test_main This pattern has helped me to use TDD easily. The only issue is that test cases are scattered among each header files. Usually I do not know exactly how many test cases/suites are included. If there is a {--list|-l } option to print a tree of registered test suites and test cases, so that one can quickly look them up here and filter the test cases to be run, it would be a great feature.