I am using and patching CppUnit. This is such a beast!
CppUnit was developed after JavaUnit, which was developed from SmallTalkUnit, which was written by the author of Extrem Programming. I think something has been lost somewhere on the way from SmallTalk unit to Cpp Unit.
Some core principles in Extrem Programming are:
I look at CppUnit and I see exactly the opposite of this. Ironically, CppUnit is used to develop test suites in the Extrem Programming spirit. Briefly, CppUnit has:
- a very complicated architecture. There are so many classes that delegates anything to another one that you don't get a clue about who does what.
- lot of empty classes. This comes from historical reasons I think. They changed the internal but kept the classes around.
- lot of duplicated interfaces, probably for the same reason
- despite so many classes, it does not have extensiblity where I need it.
It looks to me as the typical example of over-engineering. People have read Design Pattern and they want to apply it desperatly. And they also read about templates and want a maximum number of them.
CppUnit should fit in 3 or 4 classes. No more. I'll rewrite it one day.