I use the Boost Test framework for my C++ code but there are two problems with it that are probably common to all C++ test frameworks:
- There is no way to create automatic test stubs (by extracting public functions from selected classes for example).
- You cannot run a single test – you have to run the entire ‘suite’ of tests (unless you create lots of different test projects I guess).
Does anyone know of a better testing framework or am I forever to be jealous of the test tools available to Java/.NET developers?
I just responded to a very similar question. I ended up using Noel Llopis’ UnitTest++. I liked it more than boost::test because it didn’t insist on implementing the main program of the test harness with a macro – it can plug into whatever executable you create. It does suffer from the same encumbrance of boost::test in that it requires a library to be linked in. I’ve used CxxTest, and it does come closer than anything else in C++-land to automatically generating tests (though it requires Perl to be part of your build system to do this). C++ just does not provide the reflection hooks that the .NET languages and Java do. The MsTest tools in Visual Studio Team System – Developer’s Edition will auto-generate test stubs of unmanaged C++, but the methods have to be exported from a DLL to do this, so it does not work with static libraries. Other test frameworks in the .NET world may have this ability too, but I’m not familiar with any of those. So right now we use UnitTest++ for unmanaged C++ and I’m currently deciding between MsTest and NUnit for the managed libraries.