如何期待 gtest 中的程序退出?
How to expect program exit in gtest?
我正在测试一些使用 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
将正常工作,但随后我在非测试文件中引入了测试依赖项,这很……恶心。
有没有办法让 gtest
捕捉中止信号(或任何 CHECK
引发的信号)并期待它?
aaa 我在发布这个问题 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");
}
这就过去了。哇哦!
我正在测试一些使用 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
将正常工作,但随后我在非测试文件中引入了测试依赖项,这很……恶心。
有没有办法让 gtest
捕捉中止信号(或任何 CHECK
引发的信号)并期待它?
aaa 我在发布这个问题 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");
}
这就过去了。哇哦!