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

标签 c++ exit googletest glog

我正在测试一些使用来自 glogCHECK 的代码我想测试在某些情况下此检查是否失败。我的代码如下所示:

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_FAILUREEXPECT_NONFATAL_FAILUREHAS_FATAL_FAILURE,但我还没弄清楚如何使用它们。我相当有信心,如果我将 CHECK(some_flag) 更改为 EXPECT_TRUE(some_flag) 那么 EXPECT_FATAL_FAILURE 将正常工作,但随后我将介绍在非测试文件中测试依赖关系,这很……恶心。

有没有办法让 gtest 捕获中止信号(或任何 CHECK 引发的信号)并期待它?

最佳答案

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

这可以使用 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");
}

这就过去了。哇哦!

关于c++ - 如何期待 gtest 中的程序退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33485754/

相关文章:

c++ - 在不同位置渲染相同 Sprite 的数组

c++ - 带有信号和槽的 QScopedPointer

c++ - 从 std::apply 中的折叠表达式捕获返回值

linux - 退出状态代码 4479

c++ - 将数组传递给gtest中的参数化测试

ios - Gtest 在测试失败时不会写入结果 xml 文件 [jenkins]

c++ - 奇怪的段错误问题

Java 控制台程序和 CTRL-C

C++ GoogleTest - 静态成员和链接器错误 LNK 2001

c# - 程序不退出