使用gtest测试函数不会调用exit而是正常返回的方法

时间:2019-04-26 23:30:26

标签: googletest

我知道gtest中有“死亡”测试,例如EXPECT_EXIT(statement,...)测试,它期望语句最终调用exit(n)或因信号或其他原因而中止。如果该语句确实调用了exit(),则通过,但是如果仅从main returns中调用,则失败。

我正在寻找相反的东西,类似EXPECT_NO_EXIT(statement),其中语句返回而未调用exit,而只是返回一个值。这样做的原因是,如果该语句确实调用了exit,那么gtest工具就会退出,整个测试套件会立即停止。

它不一定是EXPECT_NO_EXIT,而是一种防止被测代码中对exit的调用杀死gtest工具的方法。

1 个答案:

答案 0 :(得分:0)

您可以将语句包装成一个代码,如果该语句将控制权返回给调用者,则该代码将满足断言:

EXPECT_EXIT(
  { statement; std::out << "function did not exit"; exit(0) },
  testing::ExitedWithCode(0),
  "function did not exit");