CppUnit测试框架中的异常判断宏

本文详细介绍了CppUnit测试框架中的多种异常判断宏,包括 CPPUNIT_ASSERT、CPPUNIT_ASSERT_MESSAGE、CPPUNIT_FAIL及其变种,用于测试条件判断、异常类型匹配、浮点数比较等,帮助开发者进行更精确的单元测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TestAssert (名字空间中Assert函数集合)

说明:

在CppUnit的名字空间中的全局的判定(Assert)函数,提供了多样的判断方法。

预定义宏:

(1)  CPPUNIT_ASSERT(condition)

测试目的:判断condition是否为true,如果是false则抛出异常

在进行单元测试的时候用到的最多的测试宏,判断条件condition是true还是false,如果是false则返回condition代表的字符串(#condition,在宏中进行字符串的生成;A##B,是变量的联合,代表成一个变量)

 

(2)  CPPUNIT_ASSERT_MESSAGE(message,condition)

测试目的:判断condition是否是true,如果是false,则抛出异常,包含message消息。

 

这个也是相对而言用的比较多的测试宏,判断条件condition是true还是false,如果是false则返回condition代表的字符串和自己增加的message消息

 

(3)  CPPUNIT_FAIL( message )

测试目的:简单的抛出包哈message消息的异常。

 

作为一个功能宏,在fail的时候抛出异常,其中异常包含message消息

 

(4)  CPPUNIT_ASSERT_EQUAL(expected,actual)

测试目的:判断expected和actual是否相等,不等则抛出异常。

 

测试真实值和异常值是否相同,如果不同,则抛出异常

 

(5)  CPPUNIT_ASSERT_EQUAL_MESSAGE(message,expected,actual)

测试目的:判断expected和actual是否相等,不等则抛出包含message的异常信息。

 

测试真是值和异常值是否相同,如果不同,则抛出异常,异常包含的信息为message

 

(6)  CPPUNIT_ASSERT_DOUBLES_EQUAL(expected,actual,delta)

测试目的:判断double的变量expected和actual的差值是否在delta范围内,如果不在则抛出异常。

 

测试double类型的变量的真实值和异常值得差值绝对值是否在delta范围内,如果不在范围内则抛出异常,异常消息会输出真实值和异常值。

 

(7)  CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(message,expected, actual,delta)

测试目的:判断double变量expected和actual的差值是否在deltta范围内,不在则抛出包含了message消息的异常。

 

和(6)的测试条件相同,只是异常的消息中包含了message信息

 

(8)  CPPUNIT_ASSERT_THROW( expression, ExceptionType )

测试目的:判断expression是否抛出异常类型为ExceptionType的异常,如果抛出,则CppUnit框架不抛出异常,如果没有该异常抛出则CppUnit抛出异常,并且包含非该异常的what信息。

 

通过assert判断expression表达式是否抛出ExceptionType的异常,如果抛出这种异常<则达到了自己的测试目的>,则不会抛出该异常;如果不是这个异常,则会抛出该异常,并且扩展了异常的包含信息,其中包含了外部异常的what()信息。

 

(9)  CPPUNIT_ASSERT_NO_THROW( expression )

测试的目的:该表达式不会抛出异常,如果抛出异常在CppUnit则会抛出自己的异常,并且消息中包含该异常的what信息

 

(10) CPPUNIT_ASSERT_ASSERTION_FAIL( assertion )

测试目的:嵌套宏的异常表达式定义,判断assertion表达式失败的时候(可能是上面1-9中的CppUnit抛出的自己的异常类型)抛出的异常类型是否是CppUnit中的自定义异常类型,如果是则不抛出异常,如果不是则抛出异常。实质是(8)的一个特例的嵌套。

 

(10)CPPUNIT_ASSERT_ASSERTION_FAIL_MESSAGE(message, assertion )

测试目的:和(10)的测试目的一样,只是添加了额外的信息message

 

(11)CPPUNIT_ASSERT_ASSERTION_PASS (assertion )

测试目的:判断CppUnit的assertion表达式是否pass,如果pass则不会抛出异常,如果没有pass则会抛出异常。

 

(12)CPPUNIT_ASSERT_ASSERTION_PASS_MESSAGE(message, assertion )

测试目的:同(11),只是增加了测试失败后的附加消息。

 

上面(10)-(12)的嵌套宏定以,类似于“设计模式”中的组合模式,可以进行多次嵌套。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值