В процессе настройки нашей платформы тестирования модулей С++ в течение следующих лет мы кратко отметили GoogleTest и CppUnit. У меня есть некоторый опыт работы с обоими, и мое тяжелое предпочтение - GoogleTest. В любом случае, чтобы убедить моего босса, мне нужны некоторые факты, поэтому я читал в Интернете, в том числе руководства, страницы вики и некоторые источники. Я придумал список преимуществ GoogleTest и одно преимущество CppUnit (графические тестовые ролики). Здесь они упорядочены с помощью воспринимаемой полезности:
- INSTANTIATE_TEST_CASE_P для создания экземпляра тестового примера с любым набором необходимых параметров, включая декартовы продукты
- FRIEND_TEST для тестирования частных членов класса (для всего устаревшего кода)
- превращение утверждений в точки останова
- нефатальные утверждения
- "из коробки" интеграция googlemock
- обнаружение автоматических тестов, нет необходимости перечислять их
- можно отключить и включить
- тесты для запуска могут быть выбраны с использованием шаблонов имен
- значения/параметры, параметризованные параметрами
- пользовательский предикат утверждает
- тесты смерти
- гораздо более богатый набор утверждений
- тип утверждает
- утверждение подпрограмм
- дополнительная информация об отладке может быть добавлена к утверждениям с использованием <
- RecordProperty испускает последнее значение свойства для вывода XML
- SCOPED_TRACE помогает понять контекст ошибки утверждения, возникающей из подпрограммы или цикла.
- вывод xUnit XML, может быть показан Дженкинсом сразу без преобразования XSLT между
- поддерживает принтеры пользовательских типов.
- время, затрачиваемое на индикацию теста (я подозреваю, что это также возможно с CppUnit, но я еще не понял его)
- test listener API (пользовательские плагины)
- тестовая перетасовка
- исключений и RTTI
Правильно ли я полагаю, что все вышеперечисленное не поддерживается CppUnit? Есть ли полезная функция GoogleTest недоступна в CppUnit Мне не хватает?
И последнее, но не менее важное: есть ли какие-нибудь хорошие функции CppUnit, отсутствующие в GoogleTest ?
Спасибо!