1. 下载cppunit的源代码, cppunit_1.12.1.tar.gz
2. 解压在src子文件夹下面,使用vc打开工程文件,build- batch build-build all将在lib文件夹下面生成相应的lib和dll库。至此cppunit的库下载成功
3. 新建待测项目Demo,选在Win32 console项目。新建一个TestAdd类,添加一个成员函数add.这里把实现放在了头文件中,不太规范,为的是快速演示功能。
class TestAdd
{
public:
TestAdd();
virtual ~TestAdd();
int add(int i, int j){
return i + j;
}
};
4. 新建一个测试项目,为了保持原项目的清洁,在该工作空间下面新建一个对应的test项目--DemoTest, 项目的有关设置
1)设置连接库:
2) 设置支持多线程的dll
3)设置运行时支持RTTI
4)设置编译器、和连接器可以找到头文件和库文件
5.编写用于测试的c++类,
1)头文件
// SampleTest.h: interface for the SampleTest class.
//
//
#if !defined(AFX_SAMPLETEST_H__0D080258_D862_47D6_8B8D_B13F5BDC3E0A__INCLUDED_)
#define AFX_SAMPLETEST_H__0D080258_D862_47D6_8B8D_B13F5BDC3E0A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "..\TestAdd.h"
#include <cppunit\extensions\HelperMacros.h>
class SampleTest : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(SampleTest);
CPPUNIT_TEST(testAdd);
CPPUNIT_TEST_SUITE_END();
public:
void setUp(){
m_Sample = new TestAdd();
}
void tearDown(){
delete m_Sample;
m_Sample = NULL;
}
void testAdd();
private:
TestAdd *m_Sample;
public:
SampleTest();
virtual ~SampleTest();
};
#endif // !defined(AFX_SAMPLETEST_H__0D080258_D862_47D6_8B8D_B13F5BDC3E0A__INCLUDED_)
2)实现文件
// SampleTest.cpp: implementation of the SampleTest class.
//
//
#include "stdafx.h"
#include "SampleTest.h"
#include "..\TestAdd.cpp"
//
// Construction/Destruction
//
CPPUNIT_TEST_SUITE_REGISTRATION(SampleTest);
SampleTest::SampleTest()
{
}
SampleTest::~SampleTest()
{
}
void SampleTest::testAdd()
{
CPPUNIT_ASSERT(2 == m_Sample->add(1,1));
CPPUNIT_ASSERT(2 == (1+1));
}
这里的包TestAdd.cpp包含进来比较特殊,因为在CPPUnit的运行过程中要调用TestApp的构造函数来生成类。所以一定要把这个实现文件包含进来。
7. 写主函数,运行看看吧,伙计
// sampleTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "SampleTest.h"
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>
int main(int argc, char* argv[])
{
CppUnit::TextUi::TestRunner runner;
CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry();
runner.addTest(registry.makeTest());
runner.run();
return 0;
}