我知道CppUnit可以通过以下方式测试异常:
CPPUNIT_ASSERT_THROW(expression, ExceptionType);
有人可以解释一下如何实现CPPUNIT_ASSERT_THROW()
吗?
CppUnit中的测试失败报告是通过抛出自定义异常类型来完成的。为了简单起见,我们在这里将其称为CppUnitException
。
CPPUNIT_ASSERT_THROW
是一个宏,它会扩展成基本上是这样的内容:
try
{
expression;
throw CppUnitException("Expected expression to throw");
}
catch( const ExceptionType & e )
{
}
编辑:我已经投票支持Michael Anderson的答案,因为他更为详细地介绍了CppUnit的精确代码,而我的回答更为通用。
伪代码示例如下:
try
{
// Test code that should throw
}
catch(ExceptionType e)
{
// Correct exception - handle test success
return;
}
catch(...)
{
// Wrong exception, handle test failure.
return;
}
// No exception, handle test failure.
return;