EXPECT_NO_DEATH () в Google Test - PullRequest
       5

EXPECT_NO_DEATH () в Google Test

3 голосов
/ 09 марта 2020

Есть полезные EXPECT_DEATH() и семейство правил для проверки того, что ваша программа умирает, как и ожидалось, но есть ли отрицательный набор EXPECT_NO_DEATH() или аналогичный? В качестве искусственного примера:

void should_i_die(bool die)
{
    if (die) { printf("Aaargh!"); exit(-1); }
    else       printf("I'm not dead yet!");
}

EXPECT_DEATH(should_i_die(true), "Aaargh.*");
EXPECT_NO_DEATH(should_i_die(false), ".*"); // What should be here?

Имея только автономный режим:

should_i_die(false);
EXPECT_TRUE(true); // We're not dead if we reach here

Чувствуется, что это немного отговорка, так есть ли лучший способ?

1 Ответ

1 голос
/ 09 марта 2020

Я думаю, что-то вроде этого должно работать (хотя я сам не пробовал).

EXPECT_EXIT({should_i_die(false); fprintf(stderr, "Still alive!"); exit(0);},
    ::testing::ExitedWithCode(0), "Still alive!");

Выход необходим AFAICT, так как жизнь после окончания теста на смерть считается неудачей.

Вы можете создать обертку, чтобы сделать ее менее уродливой.

...