- Блог/
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 файлы с тестируемым кодом.