CPPUnit是否有任何功能可以让我做出printf风格的断言?例如:
CPPUNIT_ASSERT("Actual size: %d", p->GetSize(), p->GetSize() == 0);
Run Code Online (Sandbox Code Playgroud)
我知道这不是一个有效的CPPUNIT_ASSERT - 我只是以此为例.
我发现CPPUNIT_ASSERT_MESSAGE(message,condition)哪个接受一个字符串,然后条件来评估,但没有运气将值输入断言.
你应该可以做这样的事情:
#define CPPUNIT_ASSERT_STREAM(MSG, CONDITION) \
do { \
std::ostringstream oss; \
CPPUNIT_ASSERT_MESSAGE(\
static_cast<std::ostringstream &>(oss << MSG).str(), \
CONDITION); \
} while (0)
CPPUNIT_ASSERT_STREAM("Actual size: " << p->GetSize(), p->GetSize() == 0);
Run Code Online (Sandbox Code Playgroud)
上面的宏也可以与Boost.format结合使用:
CPPUNIT_ASSERT_STREAM(boost::format("Actual size: %d") % p->GetSize(),
p->GetSize() == 0);
Run Code Online (Sandbox Code Playgroud)