gpt4 book ai didi

c++ - boost 测试预期 throw

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:42:01 25 4
gpt4 key购买 nike

我对需要抛出异常的代码部分进行了测试,但使用 BOOST_CHECK_THROW 仍然会使测试崩溃。这是测试:

#include <boost/test/unit_test.hpp>

#include "tools/CQueueMessage.hpp"

class TestMessage
{
public:
std::string m_message1;
std::string m_message2;
std::string m_messageEmpty;
std::string m_messageEmptyJson;

TestMessage()
: m_message1("{\"photo\":{\"name\":\"pic\",\"extension\":\"jpg\"}}"),
m_message2("{\"photo\":{\"name\":\"pic\",\"extension\":\"png\"}}"),
m_messageEmpty(""), m_messageEmptyJson("{}") {}
~TestMessage() {}
};

BOOST_FIXTURE_TEST_CASE(message2send, TestMessage)
{
QueueMessage qmsg1(m_message1);
BOOST_CHECK_EQUAL(qmsg1.messageToBeSent(), "{\"photo\":{\"name\":\"pic\",\"extension\":\"jpg\"}}");

QueueMessage qmsg2(m_message2);
BOOST_CHECK_EQUAL(qmsg2.messageToBeSent(), "{\"photo\":{\"name\":\"pic\",\"extension\":\"png\"}}");

BOOST_CHECK_THROW(QueueMessage qmsg3(m_messageEmpty), QueueMessageException)
// QueueMessage qmsg4(m_messageEmptyJson);
}

QueueMessage 类构造函数在消息为空或为空 json 时抛出 QueueMessageException。我的问题是这个测试正在打印:

Running 1 test case...
unknown location(0): fatal error in "message2send": std::exception: Bad message format

*** 1 failure detected in test suite "main"
*** Exited with return code: 201 ***

如何验证是否抛出异常?


这是构造函数:

QueueMessage(CString& messageIn)
{
std::stringstream ss;
ss << messageIn;
PTree pt;
json::read_json(ss, pt);
std::string photo = pt.get< std::string >("photo");
if (photo.empty())
{
throw QueueMessageException("Bad message format"); // in debugging it arrives here
}
}

最佳答案

我的心理调试能力告诉我,您的构造函数实际上并没有抛出 QueueMessageException。看起来它(通过函数 message2send)正在抛出 std::exception 或其不同的子项。

关于c++ - boost 测试预期 throw ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26998735/

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