转自:http://blog.chinaunix.net/u/13995/showart_263738.html
配置方法:http://blog.csdn.net/LuckilyYu/archive/2009/02/10/3874819.aspx
CppUnit 测试方法说明
目录
CppUnit 测试方法说明
一、 CppUnit环境配置
二、 测试用例
1. windows文本控制台测试方式
2. windows MFC可可视化方式
3. Linux环境:
三、 附录:
1. Windows环境配置
解压缩cppunit-1.12.0.tar.gz。,在/src目录下,将CppUnitLibraries.dsw工程用VC打开。
1. 编译cppunit目录\src\cppunit\CppUnitLibraries.dsw中的cppunit_dll项目,release版生成cppunit_dll.lib和cppunit_dll.dll,debug版生成cppunitd_dll.lib和cppunitd_dll.dll。这是CPPUnit基本类库。
2. 编译cppunit目录\src\cppunit\CppUnitLibraries.dsw中的TestRunner项目。release版生成TestRunner.lib和TestRunner.dll,debug版生成TestRunnerd.lib和TestRunnerd.dll。这是使用MFC的图形化界面的类库。
3. 在VC中工具->选择->目录->Library Files中将cppunit中的lib目录放进来
4. 把dll文件放到相应的debug和release可执行目录下面。
5. 在VC中工具->选择->目录->Include Files中将cppunit中的include目录放进来
6.vc中工程->设置->link 放入cppunitd_dll.lib
在Projects/Settings.../C++/C++ Language页选中Enable RTTI。
在Projects/Settings.../C++/Code Generation页选择Use run-time library中的内容:
Release版, 选择"Mulithreaded DLL".
Debug版, 选择 "Debug Multihreaded DLL".
2. Linux环境配置
使用如下命令解压cppunit-1.12.0.tar.gz包:
tar –zvxf cppunit-1.12.0.tar.gz
进入cppunit-1.12.0,
./configure
make
make install
make编译的文件都在src/cppunit/lib下,makeinstall仅仅是把连接库文件copy到/usr/local/lib中,我们需要把include目录下的cppunit目录复制到/usr/include/下。
cp –rdf cppunit /usr/include
配置链接库,链接库的配置文件是/etc/ld.so.conf
vi /etc/ld.so.conf
在新起一行,即如代码:
/usr/local/lib
之后重新加载链接库的配置文件
ldconfig
建立一个win32 console application工程,加入来两个文件
// TestHello.cpp : Defines the entry point for the console application.
#include <cppunit/ui/text/TestRunner.h>//以text方式测试,其他方式还有mfc、qt,后续介绍
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/extensions/HelperMacros.h>
#include "TestHello.h"
#ifdef _DEBUG
#pragma comment( lib, "testrunnerd.lib" )
#pragma comment( lib, "cppunitd.lib" )
#else
#pragma comment( lib, "testrunner.lib" )
#pragma comment( lib, "cppunit.lib" )
#endif
using namespace CppUnit;
void MyTest::testHelloWorld()//实际的测试方法的实现
{
CMyPlus plus;// CMyPlus就是我们要测试的类
CPPUNIT_ASSERT(plus.Add(1,2) == 2);
//CPPUNIT_ASSERT(1 == 6.0);
}
CPPUNIT_TEST_SUITE_REGISTRATION(MyTest);
int main(int argc, char* argv[])
{
// Create the event manager and test controller
CPPUNIT_NS::TestResult controller;
// Add a listener that colllects test result
CPPUNIT_NS::TestResultCollector result;
controller.addListener( &result );
// Add a listener that print dots as test run.
CPPUNIT_NS::BriefTestProgressListener progress;
controller.addListener( &progress );
// Add the top suite to the test runner
CPPUNIT_NS::TestRunner runner;
runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
runner.run( controller );
return result.wasSuccessful() ? 0 : 1;
}
TestHello.h文件
// TestHello.h : Defines the entry point for the console application.
class MyTest : public CPPUNIT_NS::TestCase
{
CPPUNIT_TEST_SUITE(MyTest);//测试组
CPPUNIT_TEST(testHelloWorld);//加入测试方法
CPPUNIT_TEST_SUITE_END();
public:
void setUp(void) {}
void tearDown(void) {}
protected:
void testHelloWorld(void);//实际的测试方法
};
之后编译运行,从控制台可以看到运行的结果。
环境设置在上边已经介绍了,首先建立一个MFC工程MyTestCase。
在MyTestCase.cpp之中包含头文件:
#include <cppunit/ui/mfc/TestRunner.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
之后把InitInstance函数修改成如下:
BOOL CMyTestCaseApp::InitInstance()
{
// AfxEnableControlContainer();
CppUnit::MfcUi::TestRunner runner;
//runner.addTest(TestFactoryRegistry::getRegistry("CPlusTestCase").makeTest()); //Ìí¼Ó²âÊÔ
runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
runner.run(); //show UI
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
return FALSE;
}
目的就是不使用原来的对话框,而采用CppUnit的测试对话框。
在stdafx.h之中添加如下代码:
#include <cppunit/ui/mfc/TestRunner.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/extensions/HelperMacros.h>
#ifdef _DEBUG
#pragma comment( lib, "testrunnerd.lib" )
#pragma comment( lib, "CppUnitd.lib" )
#else
#pragma comment( lib, "testrunner.lib" )
#pragma comment( lib, "CppUnit.lib" )
#endif
using namespace CppUnit;
到目前MFC的环境搭建好,下面开始写我们的测试用例代码:
添加两个各文件:
// CPlusTestCase.h
class CPlusTestCase : public CppUnit::TestCase
{
CPPUNIT_TEST_SUITE(CPlusTestCase);
CPPUNIT_TEST(testAdd);
CPPUNIT_TEST_SUITE_END();
public:
CPlusTestCase();
virtual ~CPlusTestCase();
void testAdd();
};
CPlusTestCase.cpp文件
// CPlusTestCase.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include "CPlusTestCase.h"
#include "Plus\MyPlus.h"
#include "Plus\MyPlus.cpp"
//CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CPlusTestCase,"CPlusTestCase");
CPPUNIT_TEST_SUITE_REGISTRATION(CPlusTestCase);
CPlusTestCase::CPlusTestCase()
{
}
CPlusTestCase::~CPlusTestCase()
{
}
void CPlusTestCase::testAdd()
{
CMyPlus plus;// CMyPlus就是我们要测试的类
CPPUNIT_ASSERT(plus.Add(1,2) == 2);
//CPPUNIT_ASSERT(1 == 6.0);
}
至此就可以编译测试了
(图片)
我们的被测试类很简单:
#ifndef MYPLUS_H
#define MYPLUS_H
class CMyPlus
{
public:
CMyPlus();
~CMyPlus();
int Add(const int a, const int b){return a + b;}
};
#endif //MYPLUS_H
配置步骤:
1、解压缩cppunit-1.12.0.tar.gz,之后进入目录执行如下操作:
./configure
./make
./make install
2、可以使用以下命令验证安装是否成功
ls /usr/local/lib/libcppunit*
代码同win的文本方式,编译方式如下:
[root@localhost mnt]# /usr/bin/g++ -g -o helloworld TestHello.cpp -I. -I./h -I/usr/include -I/usr/local/incluse -L/usr/lib -L/usr/local/lib -ldl -lm -lpthread -lcppunit -static
之后执行
[root@localhost mnt]# ./helloworld
MyTest::testHelloWorld : OK
CppUnit提供的断言:
CPPUNIT_ASSERT(condition) // 确信condition为真
CPPUNIT_ASSERT_MESSAGE(message, condition) // 当condition为假时失败, 并打印message
CPPUNIT_FAIL(message) // 当前测试失败, 并打印message
CPPUNIT_ASSERT_EQUAL(expected, actual) // 确信两者相等
CPPUNIT_ASSERT_EQUAL_MESSAGE(message, expected, actual) // 失败的同时打印message
CPPUNIT_ASSERT_DOUBLES_EQUAL(expected, actual, delta) // 当expected和actual之间差大于delta时失败
运行方式:
CpUnit::TextUi::TestRunner // 文本方式的TestRunner
CppUnit::QtUi::TestRunner // QT方式的TestRunner
CppUnit::MfcUi::TestRunner // MFC方式的TestRunner
相关推荐
2. **API 参考**:提供了 CppUnit 所有类和方法的详细说明,包括它们的用途、参数和返回值。 3. **示例**:包含各种实际的测试用例示例,帮助理解如何应用 CppUnit。 4. **高级主题**:涵盖了更复杂的使用场景,如...
2. **创建测试用例**:定义一个继承自`cppunit::TestFixture`的类,并覆盖`setUp()`和`tearDown()`方法,分别用于在每个测试之前和之后准备和清理资源。在类中,编写测试方法,每个方法对应一个测试用例。 3. **...
- 在测试套件中使用` CPPUNIT_TEST `宏来声明测试方法。 - 调用` CPPUNIT_TEST_SUITE_REGISTRATION `宏注册测试套件。 - 使用` CPPUNIT_MAIN `宏来运行测试。 **3. 运行测试** - CppUnit提供了两种测试运行方式:...
《图书管理系统CPPUnit测试》是一份详尽的软件测试报告,涵盖了从项目背景到测试执行的各个阶段。此报告的主要目的是对学生开发的图书管理系统进行深入的质量验证,确保其功能正常,性能稳定,满足用户需求。 1. **...
这两个RAR文件很可能包含了cppunit的源码、编译脚本、预编译的库文件,或者是配置文件,用于帮助用户快速在各自的环境中搭建cppunit测试环境。使用这些文件前,需要先解压,然后按照提供的说明文档或自己的经验配置...
这个改进后的使用方法是我为一个企业培训时所准备的,由于学员以测试人员人主,编程基础较差,所以我采用了模板替换的方式,来建立...这个资源包含CppUnit已编译后的库和源代码,示例工程、示例测试工程、使用说明。
以下是对CppUnit测试框架的详细说明: 1. **什么是单元测试**:单元测试是对软件中的最小可测试单元进行检查和验证,例如函数、方法或类。它的目的是在开发过程中尽早发现错误,而不是等到集成测试或系统测试阶段。...
使用cppunit 这是c++单元测试必备的资料。
2. **安装**:根据提供的文档或说明,安装cppunit库和ProjectWizard到开发环境中。 3. **配置**:在IDE中配置项目,包括设置cppunit为依赖库,并指定ProjectWizard生成的项目模板。 4. **编写测试**:使用cppunit...
"第一个使用CppUnit测试的C++程序" 描述说明这是一个基于CppUnit的C++项目,可能是初学者为了学习如何使用CppUnit进行单元测试而创建的。通常,单元测试用于验证软件代码的各个小部分(即单元)是否按预期工作,确保...
1. **notes.txt**:通常包含项目的说明、使用指南或开发者笔记,可能是关于如何在CBuilder6中配置cppunit和运行测试的详细步骤。 2. **examples**:这部分可能包含了一些示例代码,用于展示如何使用cppunit进行单元...
- **简述**:在序言部分,作者简要介绍了《CppUnit源码解读》文档的目的与背景,强调了通过阅读和分析CppUnit源码能帮助读者理解自动化单元测试框架的设计与实现。 - **目标**:该文档的目标是帮助读者理解CppUnit...
6. **CppUnit测试框架**: - CppUnit是C++的单元测试框架,用于编写和运行测试用例。在项目中,需要包含CppUnit的头文件,并链接`cppunit.lib`库。 - 编写测试用例时,通常会继承`cppunit::TestFixture`,并实现`...
`CppUnit.chm`文件是一个离线帮助文档,你可以通过它来查找CPPUNIT的类、方法、函数和概念的详细说明。CHM文件是Windows平台的常见格式,可以快速搜索和浏览内容。`CppUnit.chi`是CHM文件的索引,使得在大量文档中...
标题“cppunitVS2010”指的是将CppUnit 1.12.1版本的测试框架转换为能在Microsoft Visual Studio 2010环境下运行的解决方案。描述中提到的“convert CPPUNIT 1.12.1 to be a VS2010 solution”即为这个过程,意味着...
- **定义**:单元测试是软件开发过程中的一种测试方法,它针对程序中的最小可测试单元进行验证。 - **必要性**:通过检查代码的基本组件是否按预期工作来提高软件质量。它有助于早期发现缺陷并简化调试过程。 - *...