GoogleTest vs CppUnit: факти

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

  • INSTANTIATE_TEST_CASE_P to instantiate a test case with any set of parameters you want, including Cartesian products
  • FRIEND_TEST for testing private class members(for all the legacy code)
  • turning asserts into breakpoints
  • non-fatal asserts
  • "out of the box" googlemock integration
  • automatic tests detection, no need to enumerate them
  • tests can be disabled and enabled
  • tests to run can be selected using name patterns
  • value/type-parameterized tests
  • user-defined predicate asserts
  • death tests
  • much richer set of asserts
  • type asserts
  • asserting on subroutines
  • additional debug info can be added to asserts using <<
  • RecordProperty emits last value of property to the xml output
  • SCOPED_TRACE helps understand the context of an assertion failure coming from inside a sub-routine or loop.
  • xUnit xml output, can be shown by Jenkins right away without a XSLT transformation in between
  • supports custom types printers
  • time consumed by test indication(I suspect this is also possible with CppUnit but I haven figured it out yet)
  • test event listener API (user-defined plug-ins)
  • test shuffling
  • no exceptions and RTTI

Чи правильно я вважаю, що все вищеперелічене не підтримується CppUnit? Чи існує корисна функція GoogleTest недоступна в CppUnit Я відсутній?

І останнє, але не менш важливе: чи є якісь особливості CppUnit, які GoogleTest не вистачає ?

Дякую!

58
Графічний тест-бігун є перевагою? Зазвичай ви хочете щось, що можна легко автоматизувати, оскільки автоматизація означає, що ви отримуєте тестовий зворотний зв'язок легше і частіше.
додано Автор Ben Voigt, джерело
Деякі відповіді на Порівняння модулів тестового модуля c ++ спеціально стосуються функцій GoogleTest.
додано Автор Greg Hewgill, джерело
Пару років тому я робив аналогічне опитування, GoogleTest тоді не був. Я зупинився на CXXTest, який мав механізм для перерахування тестових випадків шляхом попереднього аналізу з Perl. Це значно перевершувало CppTest. Тим не менш, я нічого не знаю про GoogleTest.
додано Автор Wolfram Arnold, джерело

3 Відповіді

Якщо ви використовуєте стару версію компілятора gcc, або якщо ваш код під тестами працює на vxWorks (або VxSim), ви можете мати кращі шанси з cppUnit, ніж у рамках Google.

З іншого боку, ще однією особливістю рамки googletest є наявність 3 різних рівнів налаштування/видалення:

  • за програму
  • у тестовому випадку (або тестовій групі)
  • за окремі тестові приклади

Не впевнений, що це підтримується в cppUnit, але це може бути дуже зручним, особливо з застарілими системами.

Також є плагін googletest для Eclipse CDT.

7
додано

Якщо ви не переглянули xUnit ++ , я зробив це спеціально, оскільки я був незадоволений тим, що було доступним (у тому числі gtest). Більша частина вашого списку підтримується, і якщо ні, якщо це функція "повинна мати", я, напевно, захочу її додати.

3
додано
Чесно кажучи, я не пам'ятаю, яка ліцензія використовується, але я думаю, що це ліцензія MIT.
додано Автор moswald, джерело
Чи можете ви її випустити за дозволеною ліцензією з відкритим кодом? Як Apache 2.0 або MIT Ліцензія?
додано Автор Sachin Joseph, джерело
Велике спасибі, але, хоча текст є однаковим, License.txt не говорить, що це ліцензія MIT. Чи не могли б ви додати його (коли у вас є час, звичайно), якщо це нормально? Подобається це opensource.org/licenses/MIT ? Я думаю, що це дозволить більше людей використовувати і спробувати цю чудову рамку :-)
додано Автор Sachin Joseph, джерело
Сторінка wikipedia en.wikipedia.org/wiki/List_of_unit_testing_frameworks також не говорить, що xUnit ++ випущена під ліцензією MIT, ймовірно, тому, що вона не вказана ніде у вашій біт-розетці (я думаю) :-)
додано Автор Sachin Joseph, джерело

Такі переваги я бачу. Є кілька тестових бігунів з графічним інтерфейсом:

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

Я використовував перший, і він працює досить добре, хоча він знаходиться в розробці і потребує певної роботи. Не знаю, чи є інші варіанти.

3
додано
IT KPI C/С++ новым годом
IT KPI C/С++ новым годом
747 учасників

Чат обсуждения С/С++. - Вопросы "напишите за меня лабу" - это оффтоп. - Оффтоп, флуд, оскорбления и вбросы здесь не приняты. - За нарушение - предупреждение или mute на неделю. - За спам и рекламу - ban. Все чаты IT KPI: https://t.me/itkpi/1147