- PVSM.RU - https://www.pvsm.ru -
Google Test — это фреймворк от Google для юнит-тестирования кода на С++. Общей архитектурой он слегка напоминает общепринятые boost::test и CppUnit, хотя слегка отличается в деталях (как по мне — в лучшую сторону). Большая обзорная статья этого фреймворка уже как-то пробегала [1] на Хабре, но нынче она в каком-то побитом состоянии (код не отображается), да и кажется мне слишком сложной для начала работы. Поэтому я коротко опишу «Hello world» на Google Test, указав на несколько потенциальных проблем, с которыми вы можете столкнуться, используя Google Test при разработке под Visual Studio.
Код Google Test успешно собирается Visual Studio 20082010 (другими не пробовал). На выходе вы получите файлы gtestd.libgtest.lib (для дебаг и релиз конфигураций). Со сборкой на этом всё.
#include "stdafx.h"
#include "gtest/gtest.h"
class CRectTest : public ::testing::Test {
};
TEST_F(CRectTest, CheckPerimeter)
{
CSomeRect rect;
rect.x = 5;
rect.y = 6;
ASSERT_TRUE(rect.GetPerimeter() == 22);
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Здесь мы тестируем некий класс прямоугольника на правильность вычисления периметра.
Не ошибитесь с выбором компилируемого решения на втором шаге. Если ошибетесь и забудете — выяснить в чём ошибка позже будет фактически не реально.
Если вы планируете разнести основное тестовое приложение и сами тесты по разным проектам, вы столкнётесь с одной хитрой проблемой. Дело в том, что гугловские юнит-тесы по сути являются статическими классами и компилятор Visual C++ из-за имеющегося нём бага попросту выкинет эти классы по ходу компиляции. Для избежания этого бага нужно выкрутиться способом, описанным вот тут [5].
Не забывайте, что тестируемые статические библиотеки нужно не достаточно добавить в зависимости (Dependencies) тестового проекта, их нужно добавить в ссылки (References), иначе получим ошибки линковки.
Чуть более глубокая статья на Хабре [1]
Быстрый старт в родной документации [6]
Часто задаваемые вопросы [7]
Продвинутое использование фреймворка [8]
Плагин к Visual Studio для запуска тестов [9]
Успехов в тестировании.
С Новым Годом!
Автор: tangro
Источник [10]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/tdd/23882
Ссылки в тексте:
[1] пробегала: http://habrahabr.ru/post/119090/
[2] архив с кодом: http://code.google.com/p/googletest/downloads/detail?name=gtest-1.6.0.zip&can=2&q=
[3] тут: http://stackoverflow.com/questions/757418/should-i-compile-with-md-or-mt
[4] тут: http://msdn.microsoft.com/en-us/library/2kzt1wy3%28v=vs.80%29.aspx
[5] вот тут: http://code.google.com/p/googletest/wiki/Primer#Important_note_for_Visual_C++_users
[6] Быстрый старт в родной документации: http://code.google.com/p/googletest/wiki/Primer
[7] Часто задаваемые вопросы: http://code.google.com/p/googletest/wiki/FAQ
[8] Продвинутое использование фреймворка: http://code.google.com/p/googletest/wiki/AdvancedGuide
[9] Плагин к Visual Studio для запуска тестов: http://googletestaddin.codeplex.com/
[10] Источник: http://habrahabr.ru/post/164471/
Нажмите здесь для печати.