首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何取消BOOST测试中的“致命错误”检测

如何取消BOOST测试中的“致命错误”检测
EN

Stack Overflow用户
提问于 2013-04-18 20:44:35
回答 3查看 2.2K关注 0票数 3

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

suite_1_test_1内部,我使用execvp() (在fork()之后)运行程序A,它可能会退出,错误代码不是0。此错误代码指示程序A发生了什么情况。

问题是,如果我得到这个fatal error,我就不能处理exit()值,BOOST TEST就会立即退出。

我能不能把它关掉一会儿?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-21 21:00:47

嗯,这样做是可能的:

boost::unit_test case fails because a child process exits with nonzero

只需在main()中的#define BOOST_TEST_MODULE aot_test_module之前执行#define BOOST_TEST_IGNORE_NON_ZERO_CHILD_CODE即可

使用共享库时,请使用命令行选项--catch_system_errors=noexport BOOST_TEST_CATCH_SYSTEM_ERRORS=“no”运行。

票数 2
EN

Stack Overflow用户

发布于 2013-04-18 21:14:58

似乎boost寄存器向处理程序或其他东西发出信号,它们仍然会从forked (和被覆盖的)进程中捕获错误。您将很难将测试框架与该子进程“脱钩”。

但是,单元测试框架很少与子进程的生成一起使用,所以我不会在Boost.Test中使用fork和exec*。将这些调用从您正在测试的单元中剔除。毕竟,进程不是一个单一的单元,它更多的是一个完整的组件。我猜您不会有太多这样的子流程,所以测试这些流程与其他框架或简单脚本的协作应该不会有太大影响。

票数 1
EN

Stack Overflow用户

发布于 2013-04-18 21:03:57

据我所知,execvp() replaces你的测试程序。所以Boost.Test不再运行了。它只在失败的情况下返回。我不会在Boost.Test的上下文中使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16083323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档