如何运行增强测试并生产小型
How to run Boost Test and produce Minidumps?
我们的项目使用boost.test进行单位测试。当我们的测试案例中出现意外例外时,我们想获得微型机,因此我们已经开始整合Google Breakpad来编写Minidumps。
看起来BOOST.TEST正在拦截用户测试中的所有抛出的异常 - 我认为,因为Boost测试用例将每个功能包裹在尝试/捕获量中,并且如果引发了意外的异常,则单位测试只是失败。这样可以防止闪烁的异常处理程序射击和写微型机。
是否有可能具有boost。检验不仅在单位测试中出现意外例外捕获和失败吗?而是要让异常不接受(或重新启动),因此可以触发breghpad或另一个异常处理程序来写微型仪?
boost.test旨在从测试用例中捕获所有例外,以便继续执行其他测试用例。我认为您无法关闭此行为,但是您可以随时查阅源代码。
为了实现您所追求的目标,我会自己包裹测试用例的身体,并捕获例外,并在抛出意外例外时写出了闪烁的小型机。您可以通过写下捕获/转储处理程序作为接受函数的函数来通用此功能,该功能是您的测试用例主体,并用lambda中的测试用例主体调用处理程序:
void handler(std::function<void()> test_case)
{
try {
test_case();
} catch (...) {
write_minidump();
}
}
BOOST_AUTO_TEST_CASE(doit)
{
handler([] {
// do testing here
});
}
,如果您使用的是固定装置,它将更多地参与其中,但同样的想法将适用。
我尝试了几种不同的方法,但是以下解决方案提供了最佳结果。定义一个宏来包裹boost_auto_test_case宏,并用seh __try/__围绕调用代码,除了将异常数据输送到brkerpad中。
#define CUSTOM_AUTO_TEST_CASE( test_name )
void test_name##_custom_wrapper();
BOOST_AUTO_TEST_CASE( test_name )
{
__try
{
test_name##_custom_wrapper();
}
__except(pHandler->WriteMinidumpForException(GetExceptionInformation()), EXCEPTION_EXECUTE_HANDLER) {}
}
void test_name##_custom_wrapper()
phandler是bresspad exceptionhandler指针。
不利的一面是,您必须用包装器宏替换每次出现boost_auto_test_cast。但是它可以解决问题。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 数据成员SFINAE的C++17测试:gcc vs clang
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么二进制搜索在我的测试中不起作用
- 从父数组测试用例构造二叉树失败
- 试图对缓存进行跨步测试,但程序并没有结束
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- OpenGL在启用深度测试时不会丢弃我的碎片
- 为测试目标创建具有不同源文件夹的文件
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 换位表导致测试失败(但在游戏中运行良好)
- 用于交叉编译和CMake的预处理器宏的单元测试
- 谷歌测试中的期望值存储在哪里
- 如何在for循环中包含两个索引值的测试条件
- 在cygwin中测试新的boost安装时出现cpp错误
- 如何运行增强测试并生产小型
- 小型转储单元测试不返回 true