Я никогда не использовал CppUnit, поэтому не уверен, как работают защитники. Вы ищете что-то, что оборачивает отдельные тесты или весь набор тестов?
В первом случае вы могли бы использовать приборы, о которых упоминаете, но, насколько я понимаю, приборы следует рассматривать "вне" теста. Они устанавливают все, что нужно тесту, и очищают его потом. Любое реальное тестирование ошибок должно быть в самом тесте, но может быть легко реализовано с помощью RAII. Просто определите класс, который проверяет все, что вам нужно, в его деструкторе, а затем создайте его локальный экземпляр в начале теста. Поскольку он создается первым, он разрушается последним, поэтому он может легко проверить, что тест не изменил ни одного неожиданного состояния.
Если вы хотите проверить это после всех испытаний, вы, вероятно, захотите global fixtures