UnitTest++是一个C++的单元测试工具,这个工具小巧,使用简单.测试结果支持输出到屏幕和保存成xml文件.
这个项目的地址是:http://unittest-cpp.sourceforge.net/UnitTest++.html
本文章是基于版本1.4
使用环境是:linux fedora64 2.6.35.6
使用介绍:
1.如果还没该工具,请到项目地址去下载.
2.下载解压后,执行make,会生成静态库libUnitTest++.a
3.项目自带的测试用例在TestUnitTest++.cpp中,大家可以通过这个文件来熟悉测试用例的使用方法.
一个测试用例的语法结构是:
TEST(测试用例名称)
{
测试用例体
}
在同一范围内,测试用例名称要求唯一。
测试用例体内可以使用该项目支持的宏,常用的几个是:
CHECK:检测是否为真
CHECK_EQUAL:检测是否相等
CHECK_CLOSE:检测是否接近
4.使用方法:
当我们完成了我们的代码后,我们只要编写测试用例文件就可以了,然后在编译的时候链接上libUnitTest++.a.
比如:
我们定义如下2个文件: func.h func.cpp
其中h文件中声明了函数add,multi
cpp文件中是其实现
那么我们可以写一个测试文件,叫做test.cpp
在这个文件中要包含UnitTest++.h,如果输出结果希望到屏幕,那么包含TestReporterStdout.h,如果希望输出到xml文件中,那么
包含XmlTestReporter.h
输出到标准的输出的代码,请参见src/tests/Main.cpp
如果输出到xml文件,在main函数中应该这样写:
int main(int argc, char** argv)
{
//for xml output
ofstream ofile("./test.xml");
UnitTest::XmlTestReporter reporter(ofile);
UnitTest::TestRunner runner(reporter);
return runner.RunTestsIf(UnitTest::Test::GetTestList(),NULL,UnitTest::True(),0);
}
测试用例可以这样写:
//test case 1
TEST(func_add)
{
int x = 3;
int y = 4;
CHECK_EQUAL(add(x,y), 7);
}
//test case 2
TEST(func_multi)
{
int a = 2;
int b = 5;
CHECK_EQUAL(multi(a,b),10);
}
//test case 3
TEST(func_add2)
{
int x = 3;
int y = 4;
int sum = add(x,y);
CHECK(7 == sum);
}