ОК, здесь обсуждаются три вещи: подгонка тестов к унаследованному коду, модульное тестирование и приемочное / регрессионное тестирование, все на C ++.
Во-первых, для того, чтобы взять унаследованный код и подогнать к нему тесты, я рекомендую приобрести копию «Эффективной работы с унаследованным кодом» Майкла Фезерса. Это потрясающая книга, которая научит вас, что любой унаследованный код может быть протестирован модулем! Я использовал методы из этой книги, чтобы приспособить тесты к вещам, которые, как говорили все, не могли быть модульными, но я все равно сделал это :-)
.
Во-вторых, для модульного тестирования на C ++ я только что написал серию постов из 5 статей, в которых подробно описывается, как это сделать с помощью Visual Studio: Модульное тестирование на C ++ с Boost.Test .
Наконец, для приемочного / регрессионного тестирования я успешно использовал Fitnesse. Это в основном фреймворк для приемочных испытаний, который использует вики для организации и написания тестов. Страница вики просматривается и анализируется, чтобы превратить вызовы в тестовое устройство, которое вы пишете. Приспособление для тестирования затем становится посредником между тестом, как описано на странице вики, и вашим рабочим кодом. Я использовал этот механизм для выполнения регрессионных тестов во всем приложении сквозным. Объедините это с юнит-тестами для изменяемых вами классов и очень мощным механизмом обнаружения ошибок. Регрессионные тесты сжимают сверху, а модульные тесты сжимают снизу, а ошибки фиксируются в середине! Это отлично сработало для меня.
Получить основной дистрибутив fitnesse от fitnesse.org Вы можете получить C ++ runner для FitNesse от sourceforge . (Я являюсь разработчиком этого проекта.) Мы еще не добавили поддержку SLIM, которая есть в основной вики фитнеса, но у нас есть хорошая поддержка для нескольких приборов. Мы надеемся добавить поддержку SLIM в ближайшее время. У меня есть элементарная реализация, которую нужно завершить.