【问题标题】:How to expect program exit in gtest?如何期望 gtest 中的程序退出?
【发布时间】:2015-11-02 19:55:31
【问题描述】:

我正在测试一些使用来自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_FALIUREEXPECT_NONFATAL_FAILUREHAS_FATAL_FAILURE,但我还没有弄清楚如何使用它们。我相当有信心,如果我将CHECK(some_flag) 更改为EXPECT_TRUE(some_flag),那么EXPECT_FATAL_FAILURE 将正常工作,但随后我将在非测试文件中引入测试依赖项,这......很糟糕。

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

【问题讨论】:

    标签: c++ exit googletest glog


    【解决方案1】:

    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");
    }
    

    这通过了。哇哦!

    【讨论】:

    • 得等两天。希望那时我还记得。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多