Borrowed heavily from boost.test.minimal and used to be a single header but but over the years I've had to add a single translation unit!
My takeaway is that if you keep your code base in a condition where tests are always passing you need much less complications in your testing tools and their error reporting and fault tolerance etc. !
I have something very similar.
https://github.com/ensisoft/detonator/blob/master/base/test_...
Borrowed heavily from boost.test.minimal and used to be a single header but but over the years I've had to add a single translation unit!
My takeaway is that if you keep your code base in a condition where tests are always passing you need much less complications in your testing tools and their error reporting and fault tolerance etc. !