Подтвердить что ты не робот

GoogleTest vs CppUnit: факты

В процессе настройки нашей платформы тестирования модулей С++ в течение следующих лет мы кратко отметили 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 ?

Спасибо!

4b9b3361

Ответ 1

Если вы используете более старую версию gcc-компилятора или если ваш код в тестах работает на vxWorks (или VxSim), у вас может быть больше шансов с помощью cppUnit, чем в структуре Googletest.

С другой стороны, еще одна особенность структуры googletest - наличие трех разных уровней настройки/разрыва:

  • для каждой программы
  • для каждого тестового примера (или тестовой группы)
  • для отдельных тестовых экземпляров

Не уверен, поддерживается ли это в cppUnit, но это может пригодиться, особенно в старых системах.

Кроме того, для Eclipse CDT есть плагин googletest.

Ответ 2

Это те преимущества, которые я вижу. Есть несколько тестовых бегунов GUI:

Я использовал первый, и он работает очень хорошо, хотя он в разработке и нуждается в некоторой работе. Не знаю, есть ли другие варианты.

Ответ 3

Если вы не просмотрели xUnit ++, я сделал это специально, потому что был недоволен тем, что было доступно (включая gtest). Большая часть вашего списка поддерживается, а если нет, если это функция "должна иметь", я бы, вероятно, захотел ее добавить.