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

来源:互联网 发布:材料 知乎 编辑:程序博客网 时间:2024/05/23 00:02

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)的嵌套宏定以,类似于“设计模式”中的组合模式,可以进行多次嵌套。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 夏天小孩咳嗽流黄脓鼻涕怎么办? 受凉了流清鼻涕怎么办 宝宝50多天鼻塞怎么办 50多天孩子咳嗽怎么办 2岁宝宝伤风鼻塞怎么办 2个月伤风鼻塞怎么办 3个月宝宝鼻塞怎么办 感冒治好后咳嗽一直不好怎么办 天气太热感冒了怎么办 3个月的婴儿鼻塞怎么办 四个月宝宝感冒鼻塞严重怎么办 4个月小孩鼻塞怎么办 4个多月的宝宝流鼻涕怎么办 4个月大的宝宝流鼻涕怎么办 两岁宝宝着凉了怎么办 7岁儿童晚上鼻塞怎么办 儿童感冒鼻塞怎么办速效办法 7岁儿童感冒鼻塞怎么办 七个月婴儿感冒流鼻涕怎么办 婴儿感冒流鼻涕怎么办速效办法 三个月婴儿感冒咳嗽流鼻涕怎么办 五个月婴儿感冒咳嗽流鼻涕怎么办 两个多月的宝宝鼻塞怎么办 3个月宝宝感冒鼻塞怎么办 2个月宝宝感冒鼻塞怎么办 5个月宝宝鼻塞怎么办 6个月宝宝鼻塞怎么办 3个月婴儿感冒咳嗽怎么办 感冒打喷嚏打不出来怎么办 4岁宝宝体温37.5怎么办 8个月的宝宝鼻塞怎么办 4个月婴儿鼻塞怎么办 我一躺下就鼻塞怎么办 感冒了鼻子堵了怎么办 感冒鼻涕流的多怎么办 小孩感冒鼻塞怎么办最简单方法 鼻子痒老打喷嚏流鼻涕怎么办 眼睛红痒鼻子流鼻涕怎么办 19个月宝宝流鼻血怎么办 9个月宝宝流鼻血怎么办 8个月宝宝流鼻血怎么办