首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CppUnit如何实现异常测试

CppUnit如何实现异常测试
EN

Stack Overflow用户
提问于 2010-04-23 17:11:36
回答 2查看 4.2K关注 0票数 5

我知道CppUnit可以通过以下方式测试异常:

代码语言:javascript
复制
CPPUNIT_ASSERT_THROW(expression, ExceptionType);

有人能解释一下CPPUNIT_ASSERT_THROW()是如何实现的吗?

EN

回答 2

Stack Overflow用户

发布于 2010-04-23 17:26:53

CppUnit中的测试失败报告是通过抛出自定义异常类型来完成的。为了简单起见,我们在这里将其称为CppUnitException

CPPUNIT_ASSERT_THROW是一个宏,它将扩展为本质上是这样的东西:

代码语言:javascript
复制
try
{
   expression;
   throw CppUnitException("Expected expression to throw");
}
catch( const ExceptionType & e )
{
}

如果expression抛出(正如我们预期的那样),我们将陷入catch块,它什么也不做。

如果expression没有抛出,执行将继续到抛出CppUnitException的代码行,这将触发测试失败。

当然,CPPUNIT_ASSERT_THROW宏的实现实际上有点花哨,因此也报告了行和文件信息,但这是它的工作原理的一般要点。

票数 6
EN

Stack Overflow用户

发布于 2010-04-23 17:25:48

编辑:我推荐了Michael Anderson的答案,因为他更具体地介绍了CppUnit的确切代码,而我的答案更一般。

在伪代码中,它应该是这样的:

代码语言:javascript
复制
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;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2697380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档