|
新建一个基于对话框的exe程序。例如名称为cppunit_example
包含
cppunit_example.cpp
cppunit_exampledlg.cpp
测试类
在cppunit_example工程中新建一个名称为CPlusTest的头文件CPlusTest.h,建立一个测试类CPlusTest:
#pragma warning(push, 3)
#include "C:\\Program Files\\cppunit-1.10.2\\include\\cppunit\\ui\\mfc\\TestRunner.h"
#include "C:\\Program Files\\cppunit-1.10.2\\include\\cppunit\\TestCase.h"
#include "C:\\Program Files\\cppunit-1.10.2\\include\\cppunit\\extensions\\HelperMacros.h"
#pragma warning(pop)
class CPlusTest : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(CPlusTest);
CPPUNIT_TEST(TestEqual1);
CPPUNIT_TEST(TestEqual2);
CPPUNIT_TEST_SUITE_END();
public:
CPlusTest(){};
virtual ~CPlusTest(){};
void setUp();
void tearDown();
void TestEqual1();
void TestEqual2();
private:
int x;
int y;
};
新建一个名称为CPlusTest的实现文件CPlusTest.cpp
#include”stdafx.h”
#include”CPlusTest.h”
void CplusTest::setUp()
{
x = 1;
y = 2;
};
void CplusTest::tearDown()
{
x = 0;
y = 0;
}
void CplusTest::TestEqual1()
{
//CPPUNIT_ASSERT(x + y == 4);
Cplus puls;
int nResult = puls.Add(x+y);
CPPUNIT_ASSERT_EQUAL(30,nResult);
}
void CplusTest::TestEqual2()
{
//CPPUNIT_ASSERT(x + y == 3);
Cplus puls;
int nResult = puls.Add(x+y);
CPPUNIT_ASSERT_EQUAL(3,nResult);
}
在cppunit_example.cpp文件的开始加上下面语句:
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CPlusTest, "plusTest");
在cppunit_example.cpp文件的InitInstance中只需要具有下面的语句
CppUnit::MfcUi::TestRunner runner;
CppUnit::Test *pSuite = CppUnit::TestFactoryRegistry::getRegistry("plusTest").makeTest();
runner.addTest(pSuite);
runner.run();
此处的runner是一个mfc图形界面的,也可以是文本方式的。
说明: 现在在图形化界面中包含了三层树结构。第一层是plusTest,第二层是CPlusTest,第三层是TestPlus1和TestPlus2。 可以给getRegistry不指定参数使用默认注册的test case,即“All Tests”。
根据测试代码编写产品代码
编写完上面的测试代码后,进行编译。编译肯定通不过,编译器会告诉我们CPlus类没有声明,因为我们还没有实现CPlus类呢!现在的工作就是马上实现CPlus类,让编译通过。现在你应该了解一点“测试驱动“的味道了吧?
在cppunit_example.dsw中加入一个MFC Extension Dll的新Project,在这个Project 中加入类CPlus,它的声明如下
class AFX_EXT_CLASS CPlus
{
public:
CPlus();
virtual ~CPlus();
public:
int Add(int nNum1, int nNum2);
};
仅有一个方法,就是我们的测试代码要测试的那个方法。来看看它的实现:
int CPlus::Add(int nNum1, int nNum2)
{
return nNum1+nNum2;
}
把这个工程加入到你的测试工程中去,现在让前面那个包含测试代码的Project dependent这个Project,include 相关头文件 (注意把新工程生成的DLL文件链接到你的测试工程中去),Rebuild All,你会发现编译已通过。
其中
int CPlus::Add(int nNum1, int nNum2)
{
return nNum1+nNum2;
}
就是你要编写的代码。也是你需要测试的代码。
(根据各位大虾的资料进行的总结)
[ 本帖最后由 dyjyhx 于 2006-2-14 14:42 编辑 ] |
|