如何期待gtest中的程序退出?

Pay*_*ian 5 c++ exit googletest glog

我测试,使用一些代码CHECK考勤记录,我想测试此检查在某些情况下失败.我的代码看起来像:

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...
}
Run Code Online (Sandbox Code Playgroud)

我做了一些研究gtest以及如何测试这个.我发现EXPECT_FATAL_FALIURE,EXPECT_NONFATAL_FAILUREHAS_FATAL_FAILURE,但我没有设法弄清楚如何使用它们.我相当有信心,如果我改变CHECK(some_flag),EXPECT_TRUE(some_flag)那么EXPECT_FATAL_FAILURE将正常工作,但后来我在非测试文件中引入测试依赖,这是... icky.

有没有办法gtest捕捉中止信号(或任何CHECK加注)并期待它?

Pay*_*ian 10

aaaand我在发布这个问题后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");
}
Run Code Online (Sandbox Code Playgroud)

这过去了.哇噢!