我知道gtest中有“死亡”测试,例如EXPECT_EXIT(statement,...)
测试,它期望语句最终调用exit(n)
或因信号或其他原因而中止。如果该语句确实调用了exit()
,则通过,但是如果仅从main returns
中调用,则失败。
我正在寻找相反的东西,类似EXPECT_NO_EXIT(statement)
,其中语句返回而未调用exit
,而只是返回一个值。这样做的原因是,如果该语句确实调用了exit
,那么gtest工具就会退出,整个测试套件会立即停止。
它不一定是EXPECT_NO_EXIT
,而是一种防止被测代码中对exit
的调用杀死gtest工具的方法。
答案 0 :(得分:0)
您可以将语句包装成一个代码,如果该语句将控制权返回给调用者,则该代码将满足断言:
EXPECT_EXIT(
{ statement; std::out << "function did not exit"; exit(0) },
testing::ExitedWithCode(0),
"function did not exit");