技术开发 频道

CppUnit基本原理

  3) UNIX平台

  在UNIX平台下先从http://www.sourceforge.net 获得安装包,解压后在CPPUNIT的目录依次操作:

  ./configure      //生成Makefile文件

  ./make

  ./make install   //将生成的库文件复制到/user/local/lib目录下,如果没有目录的安装权限,可以指定到自己的目录下。

  将安装包include/cppunit 目录复制到/usr/include目录下,里面是cppunit的头文件。

  网上有很多资料都说make install之后要在共享动态库配置文件中将lib文件的目录加进去,但如果编译出来的是静态库文件,则可省略了。

  四、实例一

  以下以一个helloworld的实例讲解CPPUNIT的使用,以下例子仅作参考,注释部分表达得不很严谨,仅作参考。

  #include "cppunit/Portability.h"

  #include "cppunit/TestAssert.h"

  #include "cppunit/extensions/TestFactoryRegistry.h"

  #include "cppunit/extensions/HelperMacros.h"

  #include "cppunit/TestResult.h"

  #include "cppunit/TestRunner.h"

  #include "cppunit/TestResultCollector.h"

  #include "cppunit/BriefTestProgressListener.h"

  class Test:public CPPUNIT_NS::TestCase    //定义测试用例

  {

  CPPUNIT_TEST_SUITE(Test);          //创建一个suite,并将Test添加到suite

  CPPUNIT_TEST(testHelloWorld);       //声明一个测试用例testHelloWorld,如果需要增加测试用例也需要在这里声明。

  CPPUNIT_TEST_SUITE_END();        //结束suite声明

  public:

  void setUp(void)     //CPPUNIT提供的初始化方法,将需要初始化的变量等在这里定义赋值。类似于构造函数,在执行testcase之前自动调动。

  本实例没有需要初始化的变量。

  {

  }

  void tearDown(void)      //CPPUNIT提供的结束testcase执行完之后自动运行的方法,如,需要清除的指针等。testcase执行完后自动调用,类似于虚构函数。本例不需要作清除工作,也可以不定义

  {

  }

  protected:

  void testHelloWorld(void){                  //测试用例testHelloWorld,如果需要增加测试用例,可以继续添加

  printf("Hello,World!\n");

  }

  };

  CPPUNIT_TEST_SUITE_REGISTRATION(Test);     //通过宏注册Test到test suite

  int main()

  {

  CPPUNIT_NS::TestResult controller;           //保存测试结果

  CPPUNIT_NS::TestResultCollector result;    //收集测试用例的执行结果,它能够区分测试用例执行结果是false或是出现了错误。

  controller.addListener(&result);

  CPPUNIT_NS::BriefTestProgressListener progress;

  controller.addListener(&progress);

  CPPUNIT_NS::TestRunner runner;      // TestRunner用于执行测试用例,它将待执行的测试对象管理起来,然后供用户调用

  runner.addTest(CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest());

  runner.run(controller);

  return result.wasSuccessful()?0:-1;             //反回用例的执行结果,如果成功返回0失败返回-1

  }
 


    说明:

  1.如CPPUNIT_TEST_SUITE_REGISTRATION()是CPPUNIT本身带有的宏,可以要下载cppunit-docs-1.10.2包,在这里可以查阅到函数,宏及包含的头文件。

  2.CppUnit 提供了多种验证成功失败的方式:

  CPPUNIT_ASSERT(condition)                   // 确信condition为真

  CPPUNIT_ASSERT_MESSAGE(message, condition)

  // 当condition为假时失败,并打印message

  CPPUNIT_FAIL(message)                         // 当前测试失败

0
相关文章