在gtest中,你可以尝试/捕获一个调用“exit(1)”的函数吗?

时间:2016-11-08 10:07:06

标签: c++ googletest

有一个函数在特定情况下调用exit(1),我正在尝试使用gtest对该函数运行单元测试。

我认为我可以在函数调用exit(1)的情况下使用try / catch,但它不适合我。

这是正常行为吗?如果是这样,我应该如何检测到exit(1)被调用?

1 个答案:

答案 0 :(得分:7)

与Python不同,C和C ++的exit()函数不能通过抛出异常来起作用。一旦完成C运行时清理(例如调用已注册的atexit()处理程序),它就会直接调用内核来终止进程,并且控制永远不会返回到程序。

好消息是

Google Test确实支持testing for program exit

  

ASSERT_EXIT(statement, predicate, regex);EXPECT_EXIT(statement, predicate, regex);

     

statement退出并显示给定错误,其退出代码与predicate

匹配

我没有检查过,但我猜这是通过fork()测试实现的,并等待孩子终止。