• cppunit在vs2008下使用的环境搭建(上)


    cppunit在vs2008下使用的环境搭建  1. cppunit在vs2008下使用的环境搭建1.1. 资源获取

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

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

    l 可以从分享目录下载:\\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++ 项目格式”,选择 “全是”

    ? 分别使用debug和release模式编译cppunit,cppunit_dll,TestRunner三个工程,在..\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

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

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

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

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

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

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

    ? 其次,由于CppUnit所用的动态运行期库均为多线程动态库,因此你的单元测试程序也得使用相应设置,否则会发生冲突。于是我们在工程属性->C/C++->代码生成,运行时库选择:针对debug和release分别设置为“多线程调试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 <cppunit/ui/mfc/TestRunner.h>

    #include <cppunit/ui/text/TestRunner.h>

    #include <cppunit/extensions/TestFactoryRegistry.h>

    // 唯一的应用程序对象

    //CWinApp theApp;

    using namespace std;

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

    {

      CppUnit::TextUi::TestRunner runner;

      

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

      CppUnit::TestFactoryRegistry &registry = 

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

      // 添加这个TestSuite到TestRunner中

      runner.addTest( registry.makeTest() );

      // 运行测试

      runner.run();

    return 0;

    }

    运行结果是:

    OK<1 tests>
    请按任意键继续..

  • 相关阅读:
    地铁图快速寻路算法
    手工下载器
    在Windows7下玩老游戏花屏的解决办法
    使用代码生成建立可扩展序列化器(上)
    用Java写成的Tiger到JVM编译器
    魔王的反击
    爬取排行榜123网站之2019年上海企业前20强
    微博热搜排行榜前十
    [翻译]Everything you know about CSS is wrong!
    YSlow 1/13 Minimize HTTP Requests
  • 原文地址:https://www.cnblogs.com/blueswitkey/p/2877827.html
Copyright © 2020-2023  润新知