CppUnit构建步骤及实例演练
一、设置CppUnit环境
1、我们把CppUnit解压,然后打开src/目录下的CppUnitLibraries.dsw文件
2、打开文件后,我们不要build和运行,应执行build->batch build,我们只要选择所有的win32 Debug就行了,如图1-1总共一起是6项。
3、然后就可以编译执行了,完后,他会在lib/文件下生成库文件,如图1-2
图 1-1 图 1-2
4、设置头文件和库文件路径,执行Tools->options->Directories,如图1-3,然后在Show directions for:中选择文件类型(记得三个都要选择哦),在directores:里面添加你安装文件下的include文件(另外两个也要对应)。点击确定。然后记得要保存工程(file->save workspace)
图 1-3
二、初识CppUnit测试环境
1、进入安装目录下的example文件夹下,打开examples.dsw文件。
2、将CppUnitTestApp工程设为活动工程如图1-4,然后编译运行,我们可以看到一个基于GUI方式的单元测试TestRunner界面(图1-5)
3、将CppUnitTestMain工程设置为活动工程,编译运行,我们可以看到他是一个基于文本方式的单元测试环境(图1-6)
图 1-4 图 1-5
图 1-6
三、CppUnitDemoFactorial构建步骤(以一个Factorial函数为测试实例)
1、新建一个基于对话框的工程CppUnitDemoFactorial.可编译运行。
(选择file->new->Projects->MFC AppWizard(exe),在Project name:里面填上:CppUnitDemoFactorial,点击OK,然后选择“基于对话框(Dialog based),选择完成)
2、设置工程属性:Project->Settings,如图1-7单击C++选项卡,在Category:中选择C++ Language,然后再选中Enable Run-Time Type Information(RTTL);然后在单击Link选项卡,在Object/library modules:中填入(cppunitd.lib testrunner.lib),最后单击OK
图 1-7
3、将Factorial.cpp和Factorial.h添加到工程中(文件下载1、下载2)
添加方法:Projiect->Add To Project->files,选中你的文件(记得要把你的文件放在你的工程文件夹下);
然后编译运行,会出现一下错误代码:
fatal error C1010: unexpected end of file while looking for precompiled header directive
解决方法:打开图1-7,单击C++选项卡,在Category:中选择Precompiled Headers,然后选中Not Using Precompiled Headers,然后保存,再build就不会出错了。
4、新建测试类:CFactorialTestCase,派生于CppUnit::TestCase
操作步骤:Insert->New Class,会弹出一下对话框,并根据下图填写
4、为CFactorialTestCase类添加factorialTest成员函数:右击此类->Add member function 弹出对话框,按下图填写:
5、给成员函数添加函数体,语句如下:
CPPUNIT_ASSERT_EQUAL(0,Factorial(-5)); //这是测试语句
CPPUNIT_ASSERT_EQUAL(1,Factorial(0));
CPPUNIT_ASSERT_EQUAL(6,Factorial(3));
解释:括号中0、1、6是期望值,Factorial(x)是对应测试的函数
6、在CFactorialTestCase类的定义文件中(FactorialTestCase.h),添加一下代码
#include <cppunit/TestCase.h>
#include <CppUnit/extensions/HelperMacros.h>
#include <Factorial.h>
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CFactorialTestCase : public CppUnit::TestCase
{
CPPUNIT_TEST_SUITE(CFactorialTestCase);
CPPUNIT_TEST(factorialTest);
CPPUNIT_TEST_SUITE_END();
public:
void FactorialTest();
CFactorialTestCase();
virtual ~CFactorialTestCase();
};
10、在FactorialTestCase.cpp中添加一下代码:
//
// Construction/Destruction
//
CPPUNIT_TEST_SUITE_REGISTRATION(CFactorialTestCase);
CFactorialTestCase::CFactorialTestCase()
{
}
11、在CppUnitDemoFactorial.cpp中添加一下代码:
在文件的最开头添加一下头文件包涵语句:
#include <cppunit/ui/mfc/TestRunner.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
在InitInstance()函数中添加一下代码,并把其他所有代码注释掉
BOOL CCppUnitDemoFactorialApp::InitInstance()
{
AfxEnableControlContainer();
CppUnit::MfcUi::TestTunner runner;
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
runner.run();
return TRUE;
}
12、按道理说现在可以运行了,不过,呵呵……大家别急哦,如果你现在运行就会出一下错误提示
解决方法:把CppUnit安装文件下的llib/下的testrunner.dll复制到你的工程目录下就可以了
13、做完以上所有步骤后,我们就可以运行了,运行结果如下
呵呵……我相信大家都知道这是告诉我们,我们的程序要错,但错误在那呢? ,这就留给大家自己去找吧