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

Cur*_*chi 1 c++ googletest

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

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

这是正常的行为吗?如果是这样,我怎么能检测到exit(1)被调用?

Tob*_*ght 7

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

好消息是

Google Test支持测试程序退出:

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

statement 以给定错误退出并退出代码匹配 predicate

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