Василий Сорокин, “Google C++ Mocking and Test Frameworks”

Post on 14-Jul-2015

566 views 10 download

transcript

Введение в Google Test Framework и Google Mocking

Framework

Василий СорокинСаратов 2014

Введение

● Тесты вообще и модульные тесты в частности

● Простой пример теста

● Тест с фиксацией

● Параметризированный тест

● Mocking

● Пример mock

● Еще про mock

● Интеграция в проект

● Параметры запуска

О тестировании

● Техники тестирования

● Инструменты тестирования

● Инструменты Google

Простой тест

Простой тест

Простой тест

● Критические

– ASSERT_TRUE(condition); //_FALSE

– ASSERT_EQ(expected, actual); // _NE

– ASSERT_LT(val1, val2); //_GT, _LE, _GE

– ASSERT_DOUBLE_EQ(expected, actual);

– ASSERT_THROW(statement, exception_type)● Некритические

– EXEPT_*● Безусловные

– SUCCEED();

– FAIL();

Test Fixture

Test Fixture

Fixture c параметрами

Fixture c параметрами

Fixture c параметрами

● testing::Values(...));

● testing::Range(begin, end[, step])

● testing::ValuesIn(container)

● testing::Bool()

На выходе

На выходе

Google Mocking

● Что такое Google Mocking Framework

● Отличие Mock классов от Fake классов

● Программирование с помощью интерфейсов

● final

Пример Mock

Пример Mock

Пример Mock

● .Times(cardinality)

● .WillOnce(action)

● .WillRepeatedly(action);

● Actions (Return, ReturnNull, ReturnNew, etc...)

● Matchers (_, Gt/Ge, Lt/Le, Ne, isNull, notNull)

● ::testing::InSequence;

Интеграция в проект

● Компиляция библиотек (Cуществует для всего)

● Проверка при сборке

● Собственный запускатель тестов

CI и Параметры

● Перемешивание --gtest_shuffle

● Расцветка --gtest_color=yes

● Фильтр и повторение

– --gtest_filter=Test.case, --gtest_repeat=n● XML репорт для CI --gtest_output=xml

Заключение / Вопросы

Спасибо

vasiliy.a.sorokin@gmail.com