gpt4 book ai didi

c++ - boost 单元测试和捕获异常

转载 作者:行者123 更新时间:2023-11-30 05:45:02 24 4
gpt4 key购买 nike

我们有抛出 std::runtime_error 的代码,我们正在使用 Boost 单元测试框架。

目前我们正在使用 BOOST_CHECK_THROW。不幸的是,这不会检查 what 消息。

是否有一个版本的 BOOST_CHECK_THROW 可以检查是否引发了异常并且该异常具有正确的消息?

最佳答案

查看BOOST_CHECK_EXCEPTION ,它允许您在抛出的异常上指定谓词。这是我创建的示例:

#define BOOST_TEST_MAIN
#include <boost/test/included/unit_test.hpp>

void fail()
{
throw std::logic_error("some error message");
}

void succeed()
{
}

void wrong_msg()
{
throw std::logic_error("some other error message");
}

bool correctMessage(const std::logic_error& ex)
{
BOOST_CHECK_EQUAL(ex.what(), std::string("some error message"));
return true;
}

BOOST_AUTO_TEST_CASE(case_fail)
{
BOOST_CHECK_EXCEPTION(fail(), std::logic_error, correctMessage);
}

BOOST_AUTO_TEST_CASE(case_succeed)
{
BOOST_CHECK_EXCEPTION(succeed(), std::logic_error, correctMessage);
}

BOOST_AUTO_TEST_CASE(case_wrong_msg)
{
BOOST_CHECK_EXCEPTION(wrong_msg(), std::logic_error, correctMessage);
}

输出:

Running 3 test cases...
testUnitTest.cpp(31): error in "case_succeed": exception std::logic_error is expected
testUnitTest.cpp(20): error in "case_wrong_msg": check ex.what() == std::string("some error message") failed [some other error message != some error message]

*** 2 failures detected in test suite "Master Test Suite"

关于c++ - boost 单元测试和捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29542882/

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