cppunit在vs2008下使用的环境搭建

1. cppunitvs2008下使用的环境搭建

1.1. 资源获取

Cppunit建议使用较稳定的最近的版本,

可以从网上下载:http://sourceforge.net/projects/cppunit/files/cppunit/1.12.1/

可以从分享目录下载:\\192.168.150.174\软件\cppunit-1.12.1.tar.gz

vs2008可以从分享目录下载:\\192.168.150.174\软件\vs2008

1.2. 编译cppunit相关及配置vc环境

安装vs2008并解压缩cppunit

打开..\cppunit-1.12.1\src\CppUnitLibraries.dsw,中途碰到提醒说“转换为当前的 Visual C++ 项目格式”,选择 “全是”

分别使用debugrelease模式编译cppunitcppunit_dllTestRunner三个工程,在..\cppunit-1.12.1\lib目录下能看到以下文件

debug

release

cppunit

cppunitd.lib

cppunit.lib

cppunit_dll

cppunitd_dll.dll

cppunitd_dll.lib

cppunitd_dll.pdb

cppunit_dll.dll

cppunit_dll.lib

TestRunner

destrunnerd.dll

testrunnerd.lib

TestRunner.dll

TestRunner.lib

备注:cppunitcppunit_dll工程的区别点在于cppunit编译出来的是静态库,cppunit_dll编译出来的是动态库

配置vc环境:  工具菜单->选项->项目和解决方案->vc++目录..\cppunit-1.12.1\includevc包含文件目录中..\cppunit-1.12.1\lib 加入到vc的库目录中然后将 ..\cppunit-1.12.1\lib 路径加入到系统路径中(因为我们的测试程序需要cppunitdll文件,所以要dll所在路径加入到系统路径(path)变量中或者将这些文件拷贝到系统目录中也可以).

1.3. 选择控制台方式搭建第一个工程

由于在CppUnit可以选择控制台方式和UI方式两种表现方案,区别在于前者没有GUI,后者有GUI。我们先选择使用控制台方式的测试环境。

新建c++工程“Win32控制台应用程序”并配置这个工程

首先工程中打开RTTI开关,具体位置在:工程属性->C/C++->语言,启动运行时类型信息选择“是”。

其次,由于CppUnit所用的动态运行期库均为多线程动态库,因此你的单元测试程序也得使用相应设置,否则会发生冲突。于是我们在工程属性->C/C++->代码生成,运行时库选择:针对debugrelease分别设置为“多线程调试DLL“多线程DLL,这里我们就选择前者好了

然后,link正确的lib工程属性->链接器->输入,附加依赖项加入“cppunitd.lib

最后加入以下文件并编译运行:

math.h

/// math.h

// A TestFixture subclass.

#include "cppunit/extensions/HelperMacros.h"

class MathTest : public CppUnit::TestFixture {

  // 声明一个TestSuite

  CPPUNIT_TEST_SUITE( MathTest );

  // 添加测试用例到TestSuite, 定义新的测试用例需要在这儿声明一下

  CPPUNIT_TEST( testAdd );

  // TestSuite声明完成

  CPPUNIT_TEST_SUITE_END();

  // 其余不变

protected:

  int m_value1, m_value2;

  

public:

  MathTest() {}

  

  // 初始化函数

  void setUp ();

  // 清理函数

  void tearDown();

  

  // 测试加法的测试函数

  void testAdd ();

  // 可以添加新的测试函数

};

math.cpp

/// math.cpp

#include "stdafx.h"

#include "math.h"

// 把这个TestSuite注册到名字为"alltest"TestSuite如果没有定义会自动定义

// 也可以CPPUNIT_TEST_SUITE_REGISTRATION( MathTest );注册到全局的一个未命名的TestSuite.

CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( MathTest, "alltest" );

// 下面不变

void MathTest::setUp()

{

     m_value1 = 2;

     m_value2 = 2;

}

void MathTest::tearDown()

{

}

void MathTest::testAdd()

{

     int result = m_value1 + m_value2;

     CPPUNIT_ASSERT( result == 4 );

}

<入口文件>.cpp

#include "stdafx.h"

#include "StartCppunit.h"

#include 

#include 

#include 

// 唯一的应用程序对象

//CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])

{

  CppUnit::TextUi::TestRunner runner;

  

  // 从注册的TestSuite中获取特定的TestSuite, 没有参数获取未命名的TestSuite.

  CppUnit::TestFactoryRegistry ®istry = 

      CppUnit::TestFactoryRegistry::getRegistry("alltest");

  // 添加这个TestSuiteTestRunner

  runner.addTest( registry.makeTest() );

  // 运行测试

  runner.run();

return 0;

}

运行结果是:

                 
 


1.4. 选择MFC GUI方式搭建第二个工程

新建c++工程“MFC应用程序”并配置这个工程

首先工程中打开RTTI开关:工程属性->C/C++->语言,启动运行时类型信息选择“是”。

其次,由于CppUnit所用的动态运行期库均为多线程动态库,因此你的单元测试程序也得使用相应设置,否则会发生冲突。于是我们在工程属性->C/C++->代码生成,运行时库选择:针对debugrelease分别设置为“多线程调试DLL“多线程DLL,这里我们就选择前者好了

然后,link正确的lib工程属性->链接器->输入,附加依赖项加入“cppunitd.lib testrunnerd.lib

配置字符:工程属性->配置属性->常规,字符集选择“选择多字节字符”(否则会报 debug assertion failed错误)

添加testrunnerd.dll到工程的debug目录

最后加入以下文件并编译运行:

math.hmath.cpp跟第一个工程一样,<入口文件>.cpp加入

#include 

#include 

BOOL CGuiCppunitApp::InitInstance()方法修改成

BOOL CGuiCppunitApp::InitInstance()

{

CppUnit::MfcUi::TestRunner runner;

  

// 从注册的TestSuite中获取特定的TestSuite, 没有参数获取未命名的TestSuite.

CppUnit::TestFactoryRegistry ®istry = 

    CppUnit::TestFactoryRegistry::getRegistry("alltest");

 // 添加这个TestSuiteTestRunner

runner.addTest( registry.makeTest() );

// 运行测试

runner.run();

    return true;

}

运行结果可以看到cppunitGUI界面,Browse内可以看到加入的用例

                     
 

具体cppunit写法参照参考资料

CppUnit 主页 

CppUnit Cookbook  

你可能感兴趣的:(测试)