Я тестирую некоторый код, который использует CHECK
от GLog и я хотел бы проверить, что эта проверка не проходит в определенных сценариях. Мой код выглядит так:
void MyClass::foo() {
// stuff...
// It's actually important that the binary gets aborted if this flag is false
CHECK(some_flag) << "flag must be true";
// more stuff...
}
Я провел некоторое исследование gtest
и как я мог бы проверить это. я нашел EXPECT_FATAL_FALIURE
, EXPECT_NONFATAL_FAILURE
, а также HAS_FATAL_FAILURE
но мне не удалось понять, как их использовать. Я довольно уверен, что если я изменю CHECK(some_flag)
в EXPECT_TRUE(some_flag)
затем EXPECT_FATAL_FAILURE
будет работать правильно, но затем я ввожу тестовые зависимости в не тестовые файлы, что … icky.
Есть ли способ для gtest
поймать сигнал сброса (или что-то CHECK
поднимает) и ожидать этого?
аааа а я нашел ответ через 5 минут после публикации этого вопроса. Типичный.
Это можно сделать с помощью Смертельные тесты от gtest. Вот как выглядит мой тест:
TEST(MyClassTest, foo_death_test) {
MyClass clazz(false); // make some_flag false so the CHECK fails
ASSERT_DEATH( { clazz.foo(); }, "must be true");
}
Это проходит. Woohoo!
Других решений пока нет …