HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: c++, фреймворки, программирование на c++, catch, мок-фреймворки, юнит-тесты, юнит-тестирование, gmock, gtest, mettle, boost.test, hippomocks</p>
1 <p>Теги: c++, фреймворки, программирование на c++, catch, мок-фреймворки, юнит-тесты, юнит-тестирование, gmock, gtest, mettle, boost.test, hippomocks</p>
2 <p>Для написания юнит-тестов и моков вам понадобятся хорошие фреймворки. К счастью, сегодня существует много разных программ с широкой функциональностью. Рассмотрим некоторые из них.</p>
2 <p>Для написания юнит-тестов и моков вам понадобятся хорошие фреймворки. К счастью, сегодня существует много разных программ с широкой функциональностью. Рассмотрим некоторые из них.</p>
3 <ol><li><a>GTest/Gmock</a>- мощная пара, которая считается по сути стандартом модульного тестирования в языке программирования C++. Можно даже сказать, что на протяжении долгого времени именно<strong>GMock</strong>был той единственной движущей силой в мире мок-фреймворков на C++. Преимущество вышеописанного инструмента очевидно: если у вас есть GMock, то GTest вы получите в комплекте. Но есть и недостаток: нужно собирать GTest/GMock в одной конфигурации с проектом, а это уже может заставить вас немного попотеть.</li>
3 <ol><li><a>GTest/Gmock</a>- мощная пара, которая считается по сути стандартом модульного тестирования в языке программирования C++. Можно даже сказать, что на протяжении долгого времени именно<strong>GMock</strong>был той единственной движущей силой в мире мок-фреймворков на C++. Преимущество вышеописанного инструмента очевидно: если у вас есть GMock, то GTest вы получите в комплекте. Но есть и недостаток: нужно собирать GTest/GMock в одной конфигурации с проектом, а это уже может заставить вас немного попотеть.</li>
4 <li><a>Catch</a>- фреймворк для модульного тестирования, совместимый не только с C++. Развёртывание с его помощью производится посредством подключения одного заголовочного файла к тестируемому проекту, в результате чего можно сразу приступать к работе. У фреймворка есть много плюсов для "плюсов": мощнейший функционал для создания assert’ов, удивительная фича под названием "sections", именованные тесты и т. д. В целом,<strong>Catch</strong>- это набор простых, но полезных инструментов.</li>
4 <li><a>Catch</a>- фреймворк для модульного тестирования, совместимый не только с C++. Развёртывание с его помощью производится посредством подключения одного заголовочного файла к тестируемому проекту, в результате чего можно сразу приступать к работе. У фреймворка есть много плюсов для "плюсов": мощнейший функционал для создания assert’ов, удивительная фича под названием "sections", именованные тесты и т. д. В целом,<strong>Catch</strong>- это набор простых, но полезных инструментов.</li>
5 <li><a>Mettle</a>- этот фреймворк чуть отличается от других, однако в нём собрано множество хороших идей. Это и полная настройка assert’ов и различный синтаксис, добавляемый этой возможностью. Можно уверенно сказать, что данный инструмент поможет лучше понять модульное тестирование и облегчит его использование.</li>
5 <li><a>Mettle</a>- этот фреймворк чуть отличается от других, однако в нём собрано множество хороших идей. Это и полная настройка assert’ов и различный синтаксис, добавляемый этой возможностью. Можно уверенно сказать, что данный инструмент поможет лучше понять модульное тестирование и облегчит его использование.</li>
6 <li><a>Boost.Test</a>- не что иное, как часть boost-библиотеки и некоторых проектов, в которых она применяется. Некоторые считают, что данный фреймворк слишком перегружен. Впрочем, у него есть и свои поклонники.</li>
6 <li><a>Boost.Test</a>- не что иное, как часть boost-библиотеки и некоторых проектов, в которых она применяется. Некоторые считают, что данный фреймворк слишком перегружен. Впрочем, у него есть и свои поклонники.</li>
7 </ol><h2>А что насчёт мок-фреймворков?</h2>
7 </ol><h2>А что насчёт мок-фреймворков?</h2>
8 <p>Как уже упоминалось, GMock был единственным мок-фреймворком для C++ в течение длительного времени. На тот момент это было связано с большой популярностью Google и GTest. Но сегодня у разработчиков C++ существует масса других вариантов:</p>
8 <p>Как уже упоминалось, GMock был единственным мок-фреймворком для C++ в течение длительного времени. На тот момент это было связано с большой популярностью Google и GTest. Но сегодня у разработчиков C++ существует масса других вариантов:</p>
9 <p>- есть инструменты типа<a>Trompeloeil</a>- они имеют понятный синтаксис и разворачиваются посредством подключения одного заголовочного файла; - есть просто потрясающие библиотеки, такие как<a>FakeIt</a>. Они помогают программистам писать фиктивные объекты (стабы и моки), используя для этого минимум кода и синтаксис, знакомый всем, кто когда-либо использовал Mockito (Java) либо какой-нибудь .NET-фреймворк для написания моков; - остаётся добавить, что есть ещё и<strong>HippoMocks</strong>, который может стать очередной альтернативой, на которую стоит обратить внимание уже сейчас.</p>
9 <p>- есть инструменты типа<a>Trompeloeil</a>- они имеют понятный синтаксис и разворачиваются посредством подключения одного заголовочного файла; - есть просто потрясающие библиотеки, такие как<a>FakeIt</a>. Они помогают программистам писать фиктивные объекты (стабы и моки), используя для этого минимум кода и синтаксис, знакомый всем, кто когда-либо использовал Mockito (Java) либо какой-нибудь .NET-фреймворк для написания моков; - остаётся добавить, что есть ещё и<strong>HippoMocks</strong>, который может стать очередной альтернативой, на которую стоит обратить внимание уже сейчас.</p>
10 <p>Хотите увидеть синтаксис вышеописанных фреймворков? Это можно сделать в<a>следующем репозитории на GitHub</a>. И не забывайте писать в комментариях, какие фреймворки предпочитаете вы.</p>
10 <p>Хотите увидеть синтаксис вышеописанных фреймворков? Это можно сделать в<a>следующем репозитории на GitHub</a>. И не забывайте писать в комментариях, какие фреймворки предпочитаете вы.</p>
11 <p><em>Материал подготовлен специально для OTUS и является отрывком из статьи Д. Хэлпера<a>"Getting started with C++ unit testing"</a>.</em></p>
11 <p><em>Материал подготовлен специально для OTUS и является отрывком из статьи Д. Хэлпера<a>"Getting started with C++ unit testing"</a>.</em></p>
12  
12