Каковы наиболее современные подходы к модульному тестированию для языка С++? Класс языков с большей способностью к самоанализу (например, Python) имеет модульные модули тестирования, которые более естественны для использования. Модульные тесты могут быть определены более легко. Для сравнения, классический CppUnit
(на основе JUnit
), по-видимому, принимает очень консервативный подход. Есть ли что-то новое и лучшее, которое использует определенную силу С++ (или даже С++ 11), чтобы облегчить жизнь?
Я использовал структуру CppUnit
некоторое время довольно упрощенно для частей проекта на родном С++ Windows (Visual Studio 2005 и 2010). Раньше мы не выбирали подход, основанный на тестировании, потому что уже было много устаревшего кода, и нам было сложно добавить тесты для него. Нам пришлось реорганизовать приложение, но добавление всех хороших тестов потребует много времени даже в этом случае.
Недавно мы переключились на Visual Studio 2013 (из-за стандартной реализации С++ 11), и мы собираемся начать новый, довольно долгосрочный проект.
Имея предыдущий хороший (небольшой) опыт работы с модульным тестированием, я хотел бы попробовать подход Test Driven Development. Поскольку проект не является крошечным (ожидаемый размер примерно такой же, как у более старого, т.е. Около 200 тыс. Строк кода), я предпочитаю более легкую (но не менее работоспособную) структуру.
Вероятно, новый проект может привести к кросс-платформенной реализации (Windows и Linux). В Visual Studio 2013 есть поддержка тестирования модулей, но у меня нет опыта работы с ней и как она будет соответствовать кросс-платформенной платформе.
До сих пор я нашел список модулей модульного тестирования для С++. Однако невозможно понять, как они отличаются в принципе. В настоящее время у меня есть три кандидата (консервативный выбор):
- Boost - вероятный кандидат; тест для стандартов С++; поэтому вполне вероятно, что он будет широко принят; вероятно, самая большая группа пользователей. Он, кажется, более продвинутый, чем
CppUnit
. - CppUnit - я знаю это, но писать весь код вокруг - это не удовольствие.
- Visual Studio 2013 встроенный - новый для меня, как-то может сгенерировать скелеты, вероятно.
В любом случае, похоже, что все три используют аналогичный подход. Возможно, VS2013 поддерживает генерацию кода, но это не означает, что он ведет к чему-либо более простому.
Есть ли радикально новый подход?