EXPECT_NO_DEATH() 在 Google 测试中

EXPECT_NO_DEATH() in Google Test

有有用的 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

感觉有点逃避,有没有更好的办法?

我认为这样的事情应该可行(虽然我自己还没有尝试过)。

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

AFAICT 需要退出,因为活过死亡测试结束被视为失败。

您可以创建一个包装器以使其不那么难看。