Main函数:
#include
#include
// 如果不更改TestSuite, 本文件后期不需要更改.
int main()
{
CppUnit::TextUi::TestRunner runner;
//从注册的TestSuite中获取特定的TestSuite
CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry("alltest");
//添加这个TestSuite到TestRunner中
runner.addTest( registry.makeTest() );
// 运行测试
runner.run();
}
编译:
g++ Math.cpp MathTest.cpp main.cpp -lcppunit -ldl -lm -lpthread -o mathTest
运行:
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
./mathTest
显示:
通过的情况:OK (1 tests)
失败的情况:会显示那个测试类中的哪行测试不通过
!!!FAILURES!!!
Test Results:
Run: 1 Failures: 1 Errors: 0
1) test: MathTest::testAdd (F) line: 15 MathTest.cpp
assertion failed
- Expression: ret==4
四:实际应用
之前组内讨论时,有些模块考虑到开发测试代码时间,以及新人上手慢的问题,我觉得也有道理,后面有时间会继续完善测试过程,总结下什么样的模块适合做单元测试,以及怎么减少这种代价和风险。
五:什么样的模块适合做类单元测试
不能单独运行的模块,必须依赖上级模块的输出结果等情形;
提供给别的模块做调用的,提供头文件,.so动态库或者.a静态库;
Api测试,基础组件(kfc、mmdb)的api接口;
以上情形中,被测函数参数个数、类型不发生变化或者变化不频繁;
测试过程中,使用了开发包装过的工具去测试的,也可以考虑下是否可行;
待补充。
六:对开发的要求
模块测试的提测标准:
需要有被测功能的头文件;
需要一份简单的文档,说明该功能怎么调用,以及对传入的参数有什么样的要求(比如广告的featureWordHash要事先排序等这
类问题);
原文链接http://testing.etao.com/