Как ожидать выхода программы в gtest?

Я тестирую некоторый код, который использует 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 поднимает) и ожидать этого?

3

Решение

аааа а я нашел ответ через 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!

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]