我怎么能指望谷歌测试会有多个失败呢?

2022-08-26 00:00:00 c++ googletest

我怎么能预期Google测试会有多个失败?我在测试被测代码中发生断言时使用它。因为这些断言不是致命的,所以可能会发生多个。

以下测试用例再现了这一点:

void failTwice()
{
   EXPECT_TRUE(false) << "fail first time";
   EXPECT_TRUE(false) << "fail second time";
}

TEST_F(FailureTest, testMultipleFails)
{
   EXPECT_NONFATAL_FAILURE(failTwice(), "time");
}

这将产生以下输出:

gtest/src/gtest.cc:657: Failure
Expected: 1 non-fatal failure
  Actual: 2 failures
FailureTest.h:20: Non-fatal failure:
Value of: false
  Actual: false
Expected: true
fail first time

FailureTest.h:20: Non-fatal failure:
Value of: false
  Actual: false
Expected: true
fail second time

问题是:预期:1个非致命故障

如何告诉Google测试预期会有多个失败?


解决方案

我遇到了同样的问题,一种有效的方法是:

EXPECT_NONFATAL_FAILURE({
    EXPECT_NONFATAL_FAILURE(failTwice(), "");
},"Actual: 2");

使用"Actual:2",我设置了将发生2个非致命故障的预期。一个缺点是不容易判断您预期的是哪些错误消息。

相关文章