您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > cppUnit
如何使用CppUnit进行单元测试
作者:网络转载 发布时间:[ 2013/12/23 11:39:41 ] 推荐标签:

  首先在project中打开RTTI开关,具体位置在菜单Project/Settings/C++/C++ Language。如下图所示设置:

  由于CppUnit所用的动态运行期库均为多线程动态库,因此你的单元测试程序也得使用相应设置,否则会发生冲突。于是我们在Project/Settings/C++/Code Generation中进行如下设置:
  在Use run-time library一栏中,针对debug和release分别设置为‘Debug Multithreaded DLL’和‘Multithreaded DLL’。如下图所示:

  后别忘了在project中link正确的lib。包括本例采用的cppunit.lib和cppunitd.lib静态库以及用于GUI方式的TestRunner.dll对应的lib。具体位置在Project/Settings/Link/General

  在‘Object/library modules’中,针对debug和release分别加入cppunitd.lib testrunnerd.lib和cppunit.lib TestRunner.lib。如下图所示:

  后,由于TestRunner.dll为我们提供了基于GUI的测试环境。为了让我们的测试程序能正确的调用它,TestRunner.dll必 须位于你的测试程序的路径下。所以把/lib目录下的testrunnerd.dll和TestRunner.dll文件分别拷贝到UnitTest priject的程序debug和release版本输出目录中。如下图所示:

  (这是release版本)只要放在一起可以了。
  配置工作终于完成,下面开始写测试框架。

  在CppUnit中, 是以TestCase为小的测试单位, 若干TestCase组成一个TestSuite。所以我们要先建立一个TestCase。

  在UnitTest project中新建一个类, 命名为CPlusTestCase, 让其从CppUnit::TestCase派生。为其新增一个方法,假设为 void testAdd(); 我们将在这个函数中写入我们的一些测试代码(还记得我们要测试的构想中的CPlus::Add(…)吗)。代码如下:切记要包含头文件

#include <cppunit/TestCase.h>
class CPlusTestCase : public CppUnit::TestCase
{
public:
    CPlusTestCase ();
    virtual ~ CPlusTestCase ();
    void testAdd();
};

  接下来, 我们要对我们的CPlusTestCase进行声明。声明用到了三个宏.

 CPPUNIT_TEST_SUITE();
 CPPUNIT_TEST();
 CPPUNIT_TEST_SUITE_END();

  第一个宏声明一个测试包(suite),第二个宏声明(添加)一个测试用例. 现在我们的CPlusTestCase类看上去象这样:切记要包含头文件,否则无法识别这些宏。

#include <cppunit/TestCase.h>
#include <CppUnit/extensions/HelperMacros.h>

class CPlusTestCase : public CppUnit::TestCase
{
    CPPUNIT_TEST_SUITE(CPlusTestCase);
    CPPUNIT_TEST(testAdd);
    CPPUNIT_TEST_SUITE_END();
public:
    CPlusTestCase ();
    virtual ~ CPlusTestCase ();
    void testAdd();
};


  通过这几个宏,我们把CPlusTestCase和testAdd注册到了测试列表当中。

  接下来,我们要注册我们的测试suite. 使用CPPUNIT_TEST_SUITE_NAMED_REGISTRATION()来注册一个测试suite. 这个宏的第二个参数是我们注册的suite的名字. 在这里我们可以用字符串来代替, 但我们用一个静态函数来返回这个suite的名字.

// PlusTestCase.h
class CPlusTestCase : public CppUnit::TestCase
{
    CPPUNIT_TEST_SUITE(CPlusTestCase);
    CPPUNIT_TEST(testAdd);
    CPPUNIT_TEST_SUITE_END();
public:
    CPlusTestCase ();
    virtual ~ CPlusTestCase ();
   void testAdd();
    static std::string GetSuiteName();
};
    // PlusTestCase.cpp
    std::string CPlusTestCase::GetSuiteName()
    {
            return " CPlus ";
    }

  记得要在PlusTestCase.h中包含 #include <string>

  然后在 PlusTestCase.cpp注册我们的suite.

  CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CPlusTestCase, CPlusTestCase::GetSuiteName());

  它将CPlusTestCase这个TestSuite注册到一个指定的TestFactory工厂中。

  接下来我们写一个注册函数static CppUnit::Test* GetSuite(), 使其在运行期生成一个Test.

上一页12345下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd