Фреймворки для юнит-тестов C++ | OTUS

Фреймворки для юнит-тестов C++

Cplus_Deep_27.8-5020-6b82cc.png

Для написания юнит-тестов и моков вам понадобятся хорошие фреймворки. К счастью, сегодня существует много разных программ с широкой функциональностью. Рассмотрим некоторые из них.

  1. GTest/Gmock — мощная пара, которая считается по сути стандартом модульного тестирования в языке программирования C++. Можно даже сказать, что на протяжении долгого времени именно GMock был той единственной движущей силой в мире мок-фреймворков на C++. Преимущество вышеописанного инструмента очевидно: если у вас есть GMock, то GTest вы получите в комплекте. Но есть и недостаток: нужно собирать GTest/GMock в одной конфигурации с проектом, а это уже может заставить вас немного попотеть.
  2. Catch — фреймворк для модульного тестирования, совместимый не только с C++. Развёртывание с его помощью производится посредством подключения одного заголовочного файла к тестируемому проекту, в результате чего можно сразу приступать к работе. У фреймворка есть много плюсов для «плюсов»: мощнейший функционал для создания assert’ов, удивительная фича под названием «sections», именованные тесты и т. д. В целом, Catch — это набор простых, но полезных инструментов.
  3. Mettle — этот фреймворк чуть отличается от других, однако в нём собрано множество хороших идей. Это и полная настройка assert’ов и различный синтаксис, добавляемый этой возможностью. Можно уверенно сказать, что данный инструмент поможет лучше понять модульное тестирование и облегчит его использование.
  4. Boost.Test — не что иное, как часть boost-библиотеки и некоторых проектов, в которых она применяется. Некоторые считают, что данный фреймворк слишком перегружен. Впрочем, у него есть и свои поклонники.

А что насчёт мок-фреймворков?

Как уже упоминалось, GMock был единственным мок-фреймворком для C++ в течение длительного времени. На тот момент это было связано с большой популярностью Google и GTest. Но сегодня у разработчиков C++ существует масса других вариантов:

— есть инструменты типа Trompeloeil — они имеют понятный синтаксис и разворачиваются посредством подключения одного заголовочного файла; — есть просто потрясающие библиотеки, такие как FakeIt. Они помогают программистам писать фиктивные объекты (стабы и моки), используя для этого минимум кода и синтаксис, знакомый всем, кто когда-либо использовал Mockito (Java) либо какой-нибудь .NET-фреймворк для написания моков; — остаётся добавить, что есть ещё и HippoMocks, который может стать очередной альтернативой, на которую стоит обратить внимание уже сейчас.

Хотите увидеть синтаксис вышеописанных фреймворков? Это можно сделать в следующем репозитории на GitHub. И не забывайте писать в комментариях, какие фреймворки предпочитаете вы.

Материал подготовлен специально для OTUS и является отрывком из статьи Д. Хэлпера «Getting started with C++ unit testing».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто