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 需要退出,因为活过死亡测试结束被视为失败。
您可以创建一个包装器以使其不那么难看。
有有用的 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 需要退出,因为活过死亡测试结束被视为失败。
您可以创建一个包装器以使其不那么难看。