Разработка через тестирование на C ++ - PullRequest
21 голосов
/ 15 марта 2011

Хотите начать делать TDD в C ++.Я видел CPPUnit, но мне было интересно, есть ли другие варианты, которые люди предпочитают?

Спасибо за ваши предложения!

Ответы [ 3 ]

27 голосов
/ 15 марта 2011

Я могу порекомендовать Google Mock . Он поставляется с копией Google Test в комплекте. Пару лет назад мы тоже перешли с UnitTest ++ на Google Test / Google Mock и никогда не оглядывались назад.

Google Mock можно использовать, даже если вы не хотите использовать средства для насмешек. Его совпадений очень полезны .

9 голосов
/ 15 марта 2011

Я перешел с CppUnit на boost :: test несколько лет назад, и я намного счастлив от этого.

  • Документация для CppUnit отсутствует.Удачи , пытающейся выяснить , какие параметры командной строки он поддерживает, не читая код.Очевидно, это имеет больше смысла для людей, уже знакомых с JUnit.boost :: test имеет отличную документацию .
  • boost :: test: автоматическая регистрация теста средство делает добавление тестовых блоков безумно простым.С CppUnit вы должны написать довольно много шаблонов для каждого теста (строка в заголовке и строка .cpp, чтобы зарегистрировать его, поверх самого метода теста).
  • boost ::test позволяет выбирать тестовые подмножества с помощью регулярного выражения из командной строки.Мы должны были взломать источники CppUnit, чтобы заставить его сделать это, когда мы первоначально подняли его.
  • one вещь, которую я делаю miss от CppUnit - это ее " протекторы ».Вы можете определить свои собственные и заставить их оборачивать каждый тест и проверять что угодно (например, у нас была проблема с каким-то кодом, мешающим в режиме округления с плавающей запятой x87; проверка состояния без изменений в Protector быстро поймала всех нарушителей).Boost :: test имеет нечто похожее, называемое test_observer, но в прошлый раз, когда я пытался, вы не смогли на самом деле провалить тест с одного.
6 голосов
/ 15 марта 2011

Если вы просто ищете платформы модульного тестирования C ++, посмотрите этот вопрос и ответы на него: Структура модульного тестирования C ++

...