`

CppUnit 测试方法说明

    博客分类:
  • C++
阅读更多

 

转自: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环境:

三、       附录:

 

一、   CppUnit环境配置

1.      Windows环境配置

    解压缩cppunit-1.12.0.tar.gz。,在/src目录下,将CppUnitLibraries.dsw工程用VC打开。

1. 编译cppunit目录\src\cppunit\CppUnitLibraries.dsw中的cppunit_dll项目,release版生成cppunit_dll.libcppunit_dll.dlldebug版生成cppunitd_dll.libcppunitd_dll.dll。这是CPPUnit基本类库。

2.  编译cppunit目录\src\cppunit\CppUnitLibraries.dsw中的TestRunner项目。release版生成TestRunner.libTestRunner.dlldebug版生成TestRunnerd.libTestRunnerd.dll。这是使用MFC的图形化界面的类库。

3. VC中工具->选择->目录->Library Files中将cppunit中的lib目录放进来

4. dll文件放到相应的debugrelease可执行目录下面。

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

3.     windows文本控制台测试方式

建立一个win32 console application工程,加入来两个文件

// TestHello.cpp : Defines the entry point for the console application.

#include <cppunit/ui/text/TestRunner.h>//text方式测试,其他方式还有mfcqt,后续介绍

#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);//实际的测试方法

};

之后编译运行,从控制台可以看到运行的结果。

4.      windows MFC可可视化方式

环境设置在上边已经介绍了,首先建立一个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

5.      Linux环境:

配置步骤:

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) // 
expectedactual之间差大于delta时失败

运行方式:
CpUnit::TextUi::TestRunner // 
文本方式的TestRunner
CppUnit::QtUi::TestRunner // QT
方式的
TestRunner
CppUnit::MfcUi::TestRunner // MFC
方式的TestRunner

分享到:
评论

相关推荐

    CppUnit 英文文档说明

    2. **API 参考**:提供了 CppUnit 所有类和方法的详细说明,包括它们的用途、参数和返回值。 3. **示例**:包含各种实际的测试用例示例,帮助理解如何应用 CppUnit。 4. **高级主题**:涵盖了更复杂的使用场景,如...

    编译好的CppUnit库及使用说明

    2. **创建测试用例**:定义一个继承自`cppunit::TestFixture`的类,并覆盖`setUp()`和`tearDown()`方法,分别用于在每个测试之前和之后准备和清理资源。在类中,编写测试方法,每个方法对应一个测试用例。 3. **...

    cppunit系统测试

    - 在测试套件中使用` CPPUNIT_TEST `宏来声明测试方法。 - 调用` CPPUNIT_TEST_SUITE_REGISTRATION `宏注册测试套件。 - 使用` CPPUNIT_MAIN `宏来运行测试。 **3. 运行测试** - CppUnit提供了两种测试运行方式:...

    软件测试大作业-图书管理系统CPPunit测试借鉴.pdf

    《图书管理系统CPPUnit测试》是一份详尽的软件测试报告,涵盖了从项目背景到测试执行的各个阶段。此报告的主要目的是对学生开发的图书管理系统进行深入的质量验证,确保其功能正常,性能稳定,满足用户需求。 1. **...

    cppunit编译生成的库(QT+VS)

    这两个RAR文件很可能包含了cppunit的源码、编译脚本、预编译的库文件,或者是配置文件,用于帮助用户快速在各自的环境中搭建cppunit测试环境。使用这些文件前,需要先解压,然后按照提供的说明文档或自己的经验配置...

    CppUnit的改进与使用

    这个改进后的使用方法是我为一个企业培训时所准备的,由于学员以测试人员人主,编程基础较差,所以我采用了模板替换的方式,来建立...这个资源包含CppUnit已编译后的库和源代码,示例工程、示例测试工程、使用说明。

    商业编程-源码-CppUnit测试框架入门.zip

    以下是对CppUnit测试框架的详细说明: 1. **什么是单元测试**:单元测试是对软件中的最小可测试单元进行检查和验证,例如函数、方法或类。它的目的是在开发过程中尽早发现错误,而不是等到集成测试或系统测试阶段。...

    使用cppunit 使用说明

    使用cppunit 这是c++单元测试必备的资料。

    编译好的cppunit-1.12.1 与ProjectWizard

    2. **安装**:根据提供的文档或说明,安装cppunit库和ProjectWizard到开发环境中。 3. **配置**:在IDE中配置项目,包括设置cppunit为依赖库,并指定ProjectWizard生成的项目模板。 4. **编写测试**:使用cppunit...

    cppunit_app.rar_cppunit_visual c

    "第一个使用CppUnit测试的C++程序" 描述说明这是一个基于CppUnit的C++项目,可能是初学者为了学习如何使用CppUnit进行单元测试而创建的。通常,单元测试用于验证软件代码的各个小部分(即单元)是否按预期工作,确保...

    cppunit cbuilder6 gui 0.0.2

    1. **notes.txt**:通常包含项目的说明、使用指南或开发者笔记,可能是关于如何在CBuilder6中配置cppunit和运行测试的详细步骤。 2. **examples**:这部分可能包含了一些示例代码,用于展示如何使用cppunit进行单元...

    CppUnit源码解读

    - **简述**:在序言部分,作者简要介绍了《CppUnit源码解读》文档的目的与背景,强调了通过阅读和分析CppUnit源码能帮助读者理解自动化单元测试框架的设计与实现。 - **目标**:该文档的目标是帮助读者理解CppUnit...

    Win32平台如何配置才能使用Boost、ACE、CppUnit

    6. **CppUnit测试框架**: - CppUnit是C++的单元测试框架,用于编写和运行测试用例。在项目中,需要包含CppUnit的头文件,并链接`cppunit.lib`库。 - 编写测试用例时,通常会继承`cppunit::TestFixture`,并实现`...

    CPPUNITS文档资源

    `CppUnit.chm`文件是一个离线帮助文档,你可以通过它来查找CPPUNIT的类、方法、函数和概念的详细说明。CHM文件是Windows平台的常见格式,可以快速搜索和浏览内容。`CppUnit.chi`是CHM文件的索引,使得在大量文档中...

    cppunitVS2010

    标题“cppunitVS2010”指的是将CppUnit 1.12.1版本的测试框架转换为能在Microsoft Visual Studio 2010环境下运行的解决方案。描述中提到的“convert CPPUNIT 1.12.1 to be a VS2010 solution”即为这个过程,意味着...

    visual unit单元测试使用教程

    - **定义**:单元测试是软件开发过程中的一种测试方法,它针对程序中的最小可测试单元进行验证。 - **必要性**:通过检查代码的基本组件是否按预期工作来提高软件质量。它有助于早期发现缺陷并简化调试过程。 - *...

Global site tag (gtag.js) - Google Analytics