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;
}