CppUnit 单元测试框架(二)

二、编写单元测试代码

在 CppUnit 中,每一个测试用例用一个类表示,该类通常用于测试一个模块,如果该模块是一个类,正好对应这个测试用例。

定义类:


每个测试用例类都必有继承自 CPPUNIT_NS::TestFixture。如:
class SampleTestCase : public CPPUNIT_NS::TestFixture

并且,这个类还需要定义一对宏:


CPPUNIT_TEST_SUITE (SampleTestCase);
CPPUNIT_TEST_SUITE_END ();

这对宏里面用于定义这个测试类所包含的测试方法。而且,在实现的源程序中也需要定义一个宏来 标识该测试类:


CPPUNIT_TEST_SUITE_REGISTRATION (SampleTestCase);

除此之外,每个类还可以实现两个方法:setUp(), tearDown()。第一个方法在运行这个类的测试 方法之前被调用,而第二个方法则是在运行完这个类的测试方法之后被调用。例如,如果这个测试 类需要操作一个文件里的信息,通常在运行测试方法之前,需要打开指定的文件,这些处理则可以 放在 setUp() 中实现。而完成测试之后,又需要将打开的文件关闭,这些操作可以在 tearDown() 中实现。这两个方法的原型是:


void setUp ();
void TearDown ();

定义测试方法

每个测试方法用于测试一段功能,通常对应于被测试类的某公开方法。例如,在 Sample 类中有一个 foo () 方法,在测试类 SampleTestCase 中也可以声明一个 foo () 方法。注意,强烈建议使用相同 的名称,这样便于维护。

每一个测试方法需要在类的 CPPUNIT_TEST_SUITE 宏中添加一个定义,以便 CppUnit 能够发现该测试方 法,如:


CPPUNIT_TEST (foo);

在定义测试方法之后,就可以在该方法内编写单元测试代码了。单元测试框架都采用断言式的测试方式, 即编写一个表达式,检查其结果是否为真,真则表示通过。在 CppUnit 中,用于检验测试是否通过的宏 包括:

CPPUNIT_ASSERT (expr) : 检查表达式 expr 是否为真,真则通过,假则错误。

CPPUNIT_ASSERT_TRHOW (expr, exception) : 检查表达式 expr 是否抛出异常类型 exception, 如果抛出了指定类型的异常,则通过测试。

CPPUNIT_ASSERT_MESSAGE (message, expr) : 类似于CPPUNIT_ASSERT, 但在没有通过时输出消息 message。

CPPUNIT_FAIL (message) : 强制性不通过测试,并输出消息 message。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值