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

时间:2015-11-02 19:55:31

标签: c++ exit googletest glog

我正在测试一些使用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...
}

我已经对gtest进行了一些研究,以及我如何能够对此进行测试。我找到了EXPECT_FATAL_FALIUREEXPECT_NONFATAL_FAILUREHAS_FATAL_FAILURE,但我还没弄清楚如何使用它们。我非常有信心,如果我将CHECK(some_flag)更改为EXPECT_TRUE(some_flag),那么EXPECT_FATAL_FAILURE将正常工作,但之后我会在非测试文件中引入测试依赖项,这是... icky。< / p>

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

1 个答案:

答案 0 :(得分:8)

aaaand我在发布这个问题后5分钟找到答案。典型

这可以使用gtest中的Death tests来完成。以下是我的测试结果:

TEST(MyClassTest, foo_death_test) {
  MyClass clazz(false); // make some_flag false so the CHECK fails
  ASSERT_DEATH( { clazz.foo(); }, "must be true");
}

这过去了。哇噢!