3

我收到一个错误:unknown location(0): fatal error in "suite_1_test_1": child has exited; pid: 5817; uid: 0; exit value: 255

在里面我用(after )suite_1_test_1运行一个程序,它可能会以不是的错误代码退出。此错误代码指示程序发生了什么。Aexecvp()fork()0A

问题是,如果我得到这个fatal error,我就无法处理这个exit()值,并且BOOST TEST立即退出。

我可以以某种方式将其关闭一会儿吗?

谢谢

4

3 回答 3

2
于 2013-04-21T13:00:46.667 回答
1

似乎 boost 寄存器信号处理程序或其他东西,仍然从分叉(和覆盖)进程中捕获错误。您将很难从该子进程中“解开”测试框架。

但是,单元测试框架很少与子进程的产生一起使用,所以我不会在 Boost.Test 中使用 fork 和 exec*。将这些调用从您正在测试的单元中排除。毕竟,流程不是一个单一的单元,它更像是一个整体。我猜你不会有很多这样的子流程,所以测试这些流程与另一个框架或只是一个简单的脚本的协作应该不会有太大的伤害。

于 2013-04-18T13:14:57.557 回答
0

据我了解 execvp()替换了您的测试程序。所以 Boost.Test 不再运行。它仅在失败的情况下返回。在这种情况下,我不会将它与 Boost.Test 一起使用。

于 2013-04-18T13:03:57.023 回答