- Блог/
Googletest - unit testing framework
Содержание
Googletest (Gtest) – фреймворк для юнит-тестов для C++ кода. Этот фреймворк сделан под влиянием xUnit фреймворков.
Visual Studio 2017 имеет встроенный компонент для поддержки Gtest. Чтобы начать работу необходимо в текущем Solution надо создать проект GTest. При создании проекта нужно удостоверится, что C++ runtime прилинкован как динамическая библиотека, а GTest - как статическая библиотека. Также необходимо добавить ссылки на проекты, где содержится тестируемый код (References->Add).
Проект по умолчанию содержит один демонстрационный тест.
Для запуска Gtest надо вызвать команду Test->Run->All tests.
Либо воспользоваться клавиатурной комбинацией Ctrl+R, A
.
Также можно запустить тесты в режиме отладчика: Test->Debug->All tests или Ctrl+R, Ctrl+A
.
Один тест – это одна функция вида:
TEST(<TestSuiteName, TestName>)
{
ASSERT_TRUE(False);
}
Существует 2 вида проверок: ASSERT_*
- падение проверки прерывает выполнение теста, EXPECT_*
- падение проверки не приводит к прерыванию теста.
В документации рекомендуется использовать EXPECT_*
как можно чаще, чтобы за один прогон тестов было собрано как можно больше информации об ошибках.
Наиболее часто используются следующие проверки:
ASSERT_TRUE(value)
- проверяет, чтоvalue==True
;ASSERT_FALSE(value)
- проверяет, чтоvalue==False
;ASSERT_EQ(a, b)
- проверяет, чтоa==b
;ASSERT_NE(a, b)
- проверяет, чтоa!=b
;ASSERT_LT(a, b)
- проверяет, чтоa<b
;ASSERT_LE(a, b)
- проверяет, чтоa<=b
;ASSERT_GT(a, b)
- проверяет, чтоa>b
;ASSERT_GE(a, b)
- проверяет, чтоa>=b
;ASSERT_STREQ(a, b)
- проверяет, что C-style строки равны (не работает для std::string).
Для того, чтобы тесты не падали с ошибкой компановщика в include
секции теста надо подключать и .h
, и .cpp
файлы с тестируемым кодом.