环境:VC2003
CppUnit:1.12.0
1.下载:
http://sourceforge.net/projects/cppunit/
2.安装(编译):
将下载的cppunit-1.12.0.tar.gz解压,这里解压到D:/cppunit-1.12.0
D:/cppunit-1.12.0下有个INSTALL-WIN32.txt,它里面包括源代码和几个测试例子,可以按照里面的说明来编译。
1)Open examples/examples.dsw in VC++ (contains all the samples).
用VC打开examples/examples.dsw
2)VC7 will ask you if you want to convert, anwser 'yes to all'.
VC7会询问你是否进行转换,选择“全是”
3)Make HostApp the Active project
设置HostApp为启动工程
4)Compile
编译
5)编译完了,程序会将生成的库自动拷到D:/cppunit-1.12.0/lib下
注:
1)对于cppunit和cppunit_dll,在工程属性-C/C++-代码生成-运行时库里设置的选项要和使用CppUnit进行测试的C++工程设置的一样,否则会报2005连接错误
2)由于没设置编译顺序,直接生成解决方案可能会有错误,多生成几次就正确了
3.使用:
1)新建一个名为UT的工程,编辑工程属性:
C/C++-常规-附加包含目录:"D:/cppunit-1.12.0/include"
链接器-常规-附加库目录:"D:/cppunit-1.12.0/lib"
链接器-输入-附加依赖项:cppunit.lib
2)添加要被测试的类calc:
//calc.h
#pragma once
class calc
{
public:
int add(int i, int j);
int sub(int i, int j);
};
//calc.cpp
#include "calc.h"
int calc::add(int i, int j)
{
return i + j;
}
int calc::sub(int i, int j)
{
return i - j;
}
注:此类只实现:整数的加,整数的减
3)添加用来测试的类calcTest:
//calcTest.h
#pragma once
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
#include "calc.h"
class calcTest : public CPPUNIT_NS::TestFixture
{
//定义一个测试套
CPPUNIT_TEST_SUITE(calcTest);
//添加测试用例
CPPUNIT_TEST(addTest1);
CPPUNIT_TEST(subTest1);
//测试套定义结束
CPPUNIT_TEST_SUITE_END();
public:
//用来进行测试前的设置,比如内存申请等
void setUp();
//用来进行测试后的设置,比如内存释放等
void tearDown();
void addTest1();
void subTest1();
private:
calc* m_pcalc;
};
//calcTest.cpp
#include "calcTest.h"
void calcTest::setUp()
{
m_pcalc = new calc();
}
void calcTest::tearDown()
{
delete m_pcalc;
}
void calcTest::addTest1()
{
//执行测试函数
int iRet = m_pcalc->add(1, 2);
//断言结果
CPPUNIT_ASSERT(3 == iRet);
}
void calcTest::subTest1()
{
//执行测试函数
int iRet = m_pcalc->sub(1, 2);
//断言结果
CPPUNIT_ASSERT(-1 == iRet);
}
4)添加执行测试的主文件main.cpp:
#include "cppunit/CompilerOutputter.h"
#include "cppunit/ui/text/TestRunner.h"
#include "cppunit/extensions/HelperMacros.h"
#include "calcTest.h"
#include <fstream>
int main()
{
//测试执行者
CppUnit::TextUi::TestRunner oTestRunner;
//增加测试装置
oTestRunner.addTest(calcTest::suite());
//输出到文件
std::ofstream fout("./test.log");
oTestRunner.setOutputter(CppUnit::CompilerOutputter
::defaultOutputter(&oTestRunner.result(), fout));
//执行用例
oTestRunner.run();
}