配置cppunit的方法

原创 2005年05月23日 01:08:00

编译

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

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

3.       把所有lib文件放置到CommonFiles/Lib目录下面。

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

设置VC

1.       vcOption中设置cppunit的头文件路径。是$BASE/include目录。

2.       stdafx.h中添加

#ifndef _DEBUG

#pragma  comment(lib, "..//..//CommonFiles//Lib//cppunit_dll.lib")

#pragma  comment(lib, "..//..//CommonFiles//Lib//TestRunner.lib")

#else

#pragma  comment(lib, "..//..//CommonFiles//Lib//cppunitd_dll.lib")

#pragma  comment(lib, "..//..//CommonFiles//Lib//TestRunnerd.lib")

#endif

因为debugrelease版使用的库是不相同的

二、      不使用辅助宏的CPPUnit使用方法

新建一个基于对话框的exe程序。

测试类

建立一个测试类CPlusTest

 

 

 

#pragma warning(push, 3)

#include "../../cppunit/include/cppunit/testFixture.h"

#include "../../cppunit/include/cppunit/testAssert.h"

#pragma warning(pop)

 

 

 

class CPlusTest : public CppUnit::TestFixture 

{

public:

      CPlusTest();

      virtual ~CPlusTest();

 

 

 

      void setUp()

      {

           x = 1;

           y = 2;

      };

 

 

 

      void tearDown()

      {

           x = 0;

           y = 0;

      };

     

      void TestEqual1()

      {

           CPPUNIT_ASSERT(x + y == 4);

      };

 

 

 

      void TestEqual2()

      {

           CPPUNIT_ASSERT(x + y == 3);

      }

private:

      int x;

      int y;

};

 

 

 

说明:

测试类一般继承自TestFixture,它用来表示一个测试对象,用来组织测试用例。

在每个测试用例执行之前,其所属类的setUp都会执行;之后,其所属类的tearDown都会执行。对本例而言,运行TestEqual1之前会执行setUp,之后会执行tearDown;运行TestEqual2之前也会执行setUp,之后也会执行tearDown

CPPUNIT_ASSERT用来判断括号内的值是true或者false。如果true,则表示测试成功;否则表示测试失败。也有一些别的宏可以使用。

主函数

在主cpp文件中添加下面包含语句

#pragma warning(push, 3)

#include "../../cppunit/include/cppunit/ui/mfc/TestRunner.h"

#include "../../cppunit/include/cppunit/testCaller.h"

#include "../../cppunit/include/cppunit/testResult.h"

#include "../../cppunit/include/cppunit/testSuite.h"

#pragma warning(pop)

 

 

 

InitInstance添加下面代码,并去掉显示之前对话框的代码

      CppUnit::MfcUi::TestRunner runner;

      CppUnit::TestSuite suite("test");

      CppUnit::TestCaller<CPlusTest> test1("TestEqual1",

           & CPlusTest::TestEqual1);

      CppUnit::TestCaller<CPlusTest> test2("TestEqual2",

           &CPlusTest::TestEqual2);

      suite.addTest(&test1);

      suite.addTest(&test2);

      runner.addTest(&suite);

      runner.run();

 

 

 

      说明:建立一个名字叫testtest suite。然后建立两个test case,分别名为TestEqual1TestEqual2,对应的测试函数分别是CPlusTest::TestEqual1CPlusTest::TestEqual2

      然后将两个测试用例添加到测试suite中。

      最后把测试suite添加到runner。此处的runner是一个mfc图形界面的,也可以是文本方式的。

      使用图形界面,test suitetest case分别对应着树枝和树叶,runner对应着树根。test suite可以包含别的test suiterunner也可以直接包含test case

三、      使用辅助宏的CPPUnit使用方法(推荐)

上面方法必须在主函数中做大量添加test suitetest case的操作。为了方便使用,CPPUnit提供了一些宏。

测试类的改进

在测试类的声明开始添加下面四句

CPPUNIT_TEST_SUITE(CPlusTest);

      CPPUNIT_TEST(TestEqual1);

      CPPUNIT_TEST(TestEqual2);

      CPPUNIT_TEST_SUITE_END();

      说明:要在类的最开头,即public前面加上这些语句。该类的TestEqual1TestEqual2分别作为一个test case放在一个test suite中。该test suite的名称是类的名称,即“CPlusTest

      在对应的cpp文件的开始加上下面语句

CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CPlusTest, "plusTest");

      说明:表示添加该类对应的suite(“CPlushTest”)到一个名字是plusTesttest suite。同时plusTest这个test suite会被注册。另外,也可以使用CPPUNIT_TEST_SUITE_REGISTRATION(CPlusTest);将该类对应的suite加入到默认的test suite中(“All Tests”)。

      另外只需要包含文件

#include "../../cppunit/include/cppunit/extensions/HelperMacros.h"

主函数的改进

      主函数中只需要包含TestRunner.h

      InitInstance中只需要具有下面的语句

CppUnit::MfcUi::TestRunner runner;

      CppUnit::Test *pSuite =

           CppUnit::TestFactoryRegistry::getRegistry("plusTest").makeTest();

      runner.addTest(pSuite);

      runner.run();

 

 

 

说明:

      现在在图形化界面中包含了三层树结构。第一层是plusTest,第二层是CPlusTest,第三层是TestPlus1TestPlus2

      可以给getRegistry不指定参数使用默认注册的test case,即“All Tests”。

CPPunit 1.13.2 + vs2013 配置与使用

1. 前言最近越来越发现测试的重要性, 我们在做头条的测试题的时候, 发现思路是正确的, 不过提交的时候总是存在各种各样的bug, 于是我们想, 如果能够找到一个比较方便的测试工具, 该多好, 于是我...
  • zhyh1435589631
  • zhyh1435589631
  • 2016年05月01日 22:21
  • 4498

在Windows环境下基于VC6.0的CppUnit使用

摘要 测试驱动开发(TDD)是以测试作为开发过程的中心,它坚持在编写实际代码之前,先写好基于产品代码的测试代码。开发过程的目标就是首先使测试能够通过,然后再优化设计结构。XUnit是一个基于测试驱动...
  • pengtwelve
  • pengtwelve
  • 2012年01月03日 19:04
  • 1707

eclipse 中使用cppunit

首先使用eclipse升级功能 添加一个升级站点:http://update.eclipse.org/tools/cdt/updates/release然后选择升级cppunit插件。   参考文献:...
  • taina2008
  • taina2008
  • 2007年07月28日 13:17
  • 2171

使用CPPUNIT对MFC程序进行测试

1  资源下载     使用的是cppunit-1.12.1 ,在网上下载后 需要自己编译 ,编译过程中可能出现各种问题   在此,将自己编译好的软件放在了资源中,可以直接使用: http:...
  • shuilan0066
  • shuilan0066
  • 2012年06月27日 16:26
  • 2625

用CPPUnit做单元测试

测试驱动开发(TDD)是以测试作为开发过程的中心,它坚持,在编写实际代码之前,先写好基于产品代码的测试代码。开发过程的目标就是首先使测试能够通过,然后再优化设计结构。测试驱动开发式是极限编程的重要组成...
  • iamherego
  • iamherego
  • 2015年08月26日 15:31
  • 312

Linux 下 CppUnit的安装与使用

OS:ubuntu9.04CppUnit:cppunit-1.12.11、下载、解压     到http://sourceforge.net/projects/cppunit下载,然后复制cppuni...
  • leeiee
  • leeiee
  • 2009年07月07日 12:51
  • 4245

cppunit编译,不知道为啥,好多人都报错

CppUnit 1.11.6 http://sourceforge.net/projects/cppunit. CppUnit muss leider selbst compiliert werden...
  • forestcell
  • forestcell
  • 2008年05月05日 09:47
  • 1688

C++——测试工具CppUnit的安装和配置

The first port of JUnit to C++ was done by Michael Feathers. His versions can be found on the XProgr...
  • eplanet
  • eplanet
  • 2007年10月26日 10:24
  • 10057

CPPUnit用法简介

CPPUnit是一个开源的C++单元测试工具.实际上是一些dll,你要写单元测试时调用它的一些类就行.跟我们平时使用一般的dll文件类似. 下面的详细的使用步骤,参考了别人两篇博客写出来的. ...
  • weiwenhp
  • weiwenhp
  • 2013年11月19日 23:17
  • 4154

cppunit测试的一个小例子

下面是一个利用cppunit框架进行单元测试的例子,结合gcov,lcov实现对    测试覆盖情况的统计 测试部分 由两部分组成:testfixture, main ;用两种颜色分开以示区别。 ...
  • zhu2695
  • zhu2695
  • 2016年05月06日 23:43
  • 909
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:配置cppunit的方法
举报原因:
原因补充:

(最多只允许输入30个字)