有一个函数在特定情况下调用exit(1)
,我正在尝试使用gtest对该函数运行单元测试。
我认为我可以在函数调用exit(1)
的情况下使用try / catch,但它不适合我。
这是正常行为吗?如果是这样,我应该如何检测到exit(1)
被调用?
答案 0 :(得分:7)
与Python不同,C和C ++的exit()
函数不能通过抛出异常来起作用。一旦完成C运行时清理(例如调用已注册的atexit()
处理程序),它就会直接调用内核来终止进程,并且控制永远不会返回到程序。
好消息是
ASSERT_EXIT(statement, predicate, regex);
和EXPECT_EXIT(statement, predicate, regex);
匹配
statement
退出并显示给定错误,其退出代码与predicate
我没有检查过,但我猜这是通过fork()
测试实现的,并等待孩子终止。