Unit Testing – Structuring Tests for Huge C++ Libraries

cqtunit testing

I am writing unit tests for a library written in Qt/C++.

The library is rather big, with lots of functionalities. I have a separate unitTest folder which I have my UnitTest.cpp in there. Having all test case / unit tests in the same file, makes it one very big .cpp file.

I was wondering what is the best approach to unit test huge libraries. Should I have different UnitTest.cpp files in different folder? Like one for every class? or every name space?

Best Answer

As you already discovered, putting all unit tests into one huge file is not a good practice (same as putting all classes into one file is bad as well, although it compiles a bit faster).

You should create a subdirectory unittests where all unit tests go. It should be one file per class. This way you do not clutter your code with unit tests.

If you can, split your big library into several small libraries (each in it's own directory). Each should have it's own namespace, and directory structure (main directory where the code is, and two subdirectories: one for unit tests, and other for mock classes).