GoogleTest против CppUnit: факты - PullRequest
63 голосов
/ 28 октября 2011

В процессе настройки нашей платформы модульного тестирования C ++ на следующие годы мы включили в список GoogleTest и CppUnit . У меня есть некоторый опыт работы с обоими, и я предпочитаю GoogleTest. В любом случае, чтобы убедить моего босса, мне нужно фактов , поэтому я немного почитал в Интернете, включая руководства, вики-страницы и некоторые источники. Я придумал список преимуществ GoogleTest и одно преимущество CppUnit (графические тестеры). Здесь они упорядочены по воспринимаемой полезности:

  • INSTANTIATE_TEST_CASE_P для создания тестового примера с любым набором параметров, который вы хотите, включая декартовы продукты
  • FRIEND_TEST для тестирования участников частного класса (для всего унаследованного кода)
  • превращение утверждений в точки останова
  • несмертельные утверждения
  • "из коробки" интеграция с Googlemock
  • автоматическое обнаружение тестов, не нужно перечислять их
  • тесты можно отключить и включить
  • тесты для запуска могут быть выбраны с использованием шаблонов имен
  • значение / тип параметризованных тестов
  • пользовательские предикаты утверждают
  • тесты на смерть
  • гораздо более богатый набор утверждений
  • тип подтверждения
  • утверждение на подпрограммах
  • дополнительная информация отладки может быть добавлена ​​в утверждения, используя << </li>
  • RecordProperty отправляет последнее значение свойства в вывод XML
  • SCOPED_TRACE помогает понять контекст ошибки подтверждения, приходящей из подпрограммы или цикла.
  • Вывод xUnit XML, может быть показан Jenkins сразу без преобразования XSLT между
  • поддерживает принтеры нестандартных типов
  • время, затрачиваемое на индикацию теста (я подозреваю, что это также возможно с CppUnit, но я еще не понял)
  • API прослушивателя тестовых событий (пользовательские плагины)
  • тест перетасовки
  • без исключений и RTTI

Правильно ли я считаю, что все вышеперечисленное не поддерживается CppUnit? Есть ли полезная функция GoogleTest , недоступная в CppUnit, по которой я скучаю?

И последнее, но не менее важное: есть ли какие-нибудь приятные функции CppUnit, которых в GoogleTest не хватает ?

Спасибо!

Ответы [ 3 ]

7 голосов
/ 03 ноября 2011

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

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

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

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

Также есть плагин googletest для Eclipse CDT.

4 голосов
/ 25 октября 2012

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

4 голосов
/ 04 ноября 2011

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

  1. https://github.com/ospector/gtest-gbar
  2. https://github.com/SandyChapman/gtest-runner-qt

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

...