Я новичок в тестировании CppUnit и у меня есть базовый набор вопросов.
Итак, для запуска тестов CppUnit нужна основная функция. Однако я хочу, чтобы это главное было отделено от основного проекта, который я хочу протестировать. Итак, поскольку у вас не может быть двух основных функций в одном проекте, я создал подпроект (я, кстати, использую Qt), в котором будут размещены все мои тестовые классы. Однако, это, кажется, вызывает собственный набор проблем, так как в Qt я могу указать, какой подпроект я хочу запустить. Это может означать, что я не могу сделать их подпроектами и хранить их отдельно.
Я привык к JUnit, где есть пара классов 1-к-1 для тестирования классов, и когда я хочу запустить тестовый пример для класса, я бы щелкнул правой кнопкой мыши по нему и запустил. Не требуется основная функция.
Я думаю, что я ищу объяснение того, как тестировать существующий, зрелый проект, который в настоящее время не имеет тестирования. Все, что я нахожу, предполагает, что вы разрабатываете параллельно проект и его тестирование.
Спасибо!
CPPUnit достаточно гибок, чтобы вы могли легко тестировать функциональные области большей части вашего кода: то, что я называю стороной потребления и стороной реализации.
Начиная с большой ранее существующей библиотеки, обычно рекомендуется настроить внешние тестовые сценарии «потребления», которые интенсивно используют Fixtures в cppunit. Для этого вы по сути тестируете внешнюю функциональность ваших классов объектов. Вы настроите объекты, с которыми вы знакомы, в приборах и напишите для них контрольные примеры. По мере того, как у вас есть время, добавляйте все больше и больше внутренних тестовых примеров, специфичных для внутренних компонентов каждого класса и пар, поскольку они относятся к взаимодействующим классам. в конечном счете, весь новый код, который вы пишете, будет иметь встроенные тесты или соединяться с ними (буквально сотни или тысячи с течением времени).
Я буду первым, кто скажет вам, что cppunit — это не серебряная пуля и нигде нет возле такой же гибкий, как джунит (простое отсутствие рефлексии родного языка является огромной причиной). Но все же определенно стоит потратить время.
Других решений пока нет …