首页 程序猿 软件测试 浏览内容

CppUnit与单元测试

2089 0 BaiDu已收录 评论留言

CppUnit是一个测试程序框架。cpp指的是该测试程序用c++写的,unit取“单元”测试的意思。
最初出现该测试框架是java版本的,名为junit。

为什么要用CppUnit?

  CppUnit规范了单元测试的一些思想。这些思想朴素但非常重要。CppUnit的测试观念主要有:

测试的结果是程序直接监测的,而不是“通过人眼对屏幕上的输出结果的观测”。
因此,CppUnit并不推荐屏幕输出,或者写可视化的测试单元。

测试的过程是自动化的,不需要人工的干预。
CppUnit推荐用大量典型测试数据进行回归的方式。

测试案例是安全可控的。
如果一个测试案例错误或者发生了异常,那么应该记录这个错误,并且去执行下一个案例,而不应该停下来。CppUnit测试框架保证了这一点。

单元测试是频繁发生的,每天都进行。
由于测试案例的自动化,故此,在你的模块发生了重要改变时(特别是设计上的重大变化/重构时),你都应该马上运行一遍所有的测试程序,以确认你的代码没有引入预期(或曾经出现过)的bug。你可以在准备吃饭的时候,启动单元测试程序进行回归。

单元测试的目的是产生高质量的单元(模块)。从而减少系统集成(包括系统集成测试)的代价。

CppUnit使用样例

class TestBSTR : public TestCase{public: CppUnit_TEST_SUITE(TestBSTR); CppUnit_TEST(test_allocString); CppUnit_TEST(test_allocStringWithLen); CppUnit_TEST(test_allocChinese); CppUnit_TEST_SUITE_END();public: void test_allocString() { BSTR p; WCHAR szHello[] = L"Hello, world!"; p = SysAllocString(szHello); CppUnit_ASSERT( wcscmp(p, szHello) == 0 ); CppUnit_ASSERT( SysStringLen(p) == wcslen(szHello) ); SysReAllocString(&p, szHello); CppUnit_ASSERT( wcscmp(p, szHello) == 0 ); SysFreeString(p); } void test_allocStringWithLen() { BSTR p; p = SysAllocStringLen(L"ABCDEFGH", 4); CppUnit_ASSERT( wcscmp(p, L"ABCD") == 0 ); SysReAllocStringLen(&p, L"XYZ", 2); CppUnit_ASSERT( wcscmp(p, L"XY") == 0 ); CppUnit_ASSERT( SysStringLen(p) == 2 ); SysFreeString(p); SysAllocString(L"Memory leak checker"); } void test_allocChinese() { BSTR p = SysAllocString(L"中文!"); CppUnit_ASSERT( SysStringLen(p) == 3 ); CppUnit_ASSERT( wcscmp(p, L"中文!") == 0 ); SysFreeString(p); }};CppUnit_TEST_SUITE_REGISTRATION(TestBSTR);// 使用CppUnit_TEST_SUITE_REGISTRATION辅助宏注册测试类  int main(){ TestApp app; return 0;}

CppUnit标准的main函数大概如下:

int main(){ CppUnit_NS::Test *suite = CppUnit_NS::TestFactoryRegistry::getRegistry().makeTest(); CppUnit_NS::TextUi::TestRunner runner; runner.addTest( suite ); CppUnit_NS::Outputter* outputter; outputter = new CppUnit_NS::CompilerOutputter(&runner.result(), std::cerr); runner.setOutputter(outputter); return runner.run();}
标签:
墨月的头像
  • 本文由墨月网络整理编辑,转载请以链接形式注明本文地址:https://www.moyoo.net/10747.html
    版权所有© 墨月网络 | 本文采用 BY-NC-SA 进行授权丨发布于:2014-08-13 19:19
    若未注明,均为原创;部分内容源于网络,版权归原作者所有,如有侵权,请联系我们删除。
已有 0 条评论 新浪微博

关注我们,实时联系

AD

AD