gpt4 book ai didi

c++ - 如何运行 Boost 测试并生成 Minidumps?

转载 作者:搜寻专家 更新时间:2023-10-31 02:09:25 36 4
gpt4 key购买 nike

我们的项目使用 Boost.Test 进行单元测试。我们也希望在测试用例期间发生意外异常时获得小型转储,因此我们已经开始集成 Google Breakpad 来编写小型转储。

看起来 Boost.Test 正在拦截用户测试中抛出的所有异常 - 我假设是因为 Boost 测试用例用 try/catch 包装每个函数,如果抛出意外异常,单元测试就会失败。这可以防止 Breakpad 异常处理程序触发和写入小型转储。

是否有可能让 Boost.Test 不只是在单元测试中捕获意外异常并失败?而是让异常未处理(或重新抛出),以便可以触发 Breakpad 或其他异常处理程序来编写小型转储?

最佳答案

Boost.Test 旨在捕获测试用例的所有异常,以便继续执行其他测试用例。我认为您无法关闭此行为,但您可以随时查阅源代码。

为了实现您的目标,我会自己包装测试用例的主体并捕获异常,并在抛出意外异常时写出 breakpad minidumps。您可以通过将 catch/dump 处理程序编写为接受作为您的测试用例主体的仿函数并在 lambda 中使用测试用例主体调用您的处理程序的函数来通用化它:

void handler(std::function<void()> test_case)
{
try {
test_case();
} catch (...) {
write_minidump();
}
}

BOOST_AUTO_TEST_CASE(doit)
{
handler([] {
// do testing here
});
}

如果您使用固定装置,它会涉及更多,但同样的想法也适用。

关于c++ - 如何运行 Boost 测试并生成 Minidumps?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46555660/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com