Фреймворки для юнит-тестов C++ | OTUS
🚀 OTUS Fest 2021
Бесплатная образовательная онлайн-конференция для IT-специалистов.
Подробнее

Курсы

Программирование
Backend-разработчик на PHP
-9%
Алгоритмы и структуры данных
-9%
Team Lead
-6%
Архитектура и шаблоны проектирования Разработчик IoT
-13%
C# Developer. Professional
-9%
HTML/CSS
-11%
C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Java Developer. Basic C++ Developer. Professional Web-разработчик на Python MS SQL Server Developer Android Developer. Basic Разработчик программных роботов (RPA) на базе UiPath и PIX Microservice Architecture Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов React.js Developer Node.js Developer Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes JavaScript Developer. Basic Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Экспресс-курс «IaC Ansible»
-10%
Administrator Linux.Basic
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Administrator Linux. Professional
-6%
Дизайн сетей ЦОД
-13%
NoSQL Основы Windows Server MS SQL Server Developer Инфраструктурная платформа на основе Kubernetes Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов VOIP инженер Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool"
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Фреймворки для юнит-тестов 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 комментариев
Для комментирования необходимо авторизоваться