我正在测试一些使用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_FALIURE
,EXPECT_NONFATAL_FAILURE
和HAS_FATAL_FAILURE
,但我还没弄清楚如何使用它们。我非常有信心,如果我将CHECK(some_flag)
更改为EXPECT_TRUE(some_flag)
,那么EXPECT_FATAL_FAILURE
将正常工作,但之后我会在非测试文件中引入测试依赖项,这是... icky。< / p>
gtest
是否有办法捕捉中止信号(或任何CHECK
加注)并期待它?
答案 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");
}
这过去了。哇噢!