• cppunit helloworld详尽篇



    cppunit文档真少。一个hellpworld程序折腾了好几个小时才折腾够。tnnd作者给的帮助就那么几句话。

    偶就结合折腾过程,写一个更详细点的helloworld。

    系统:fc4,gcc4

    (1)下载
        到cppunit.sourceforge.net上下载源代码。我的是cppunit-1.10.2.tar.gz。copy到/usr/src下。运行:
            tar -xf cppunit-1.10.2.tar.gz
        解压缩。
    (2)安装
        进入cppunit-1.10.2目录下。运行:
            ./configure; make; make check; make install
        安装。make check有些项通不过。没关系。:P
        .o, .a文件已经安装到/usr/local/lib中去了,但头文件没安装到/usr/include中去
    (3)copy *.h文件
        把cppunit-1.10.2的cppunit目录复制到/usr/include下
    (4)撰写mytest.cpp(从cppunit.sourceforge.net上copy下来的)
     1 #include <iostream>
     2 
     3 #include <cppunit/TestRunner.h>
     4 #include <cppunit/TestResult.h>
     5 #include <cppunit/TestResultCollector.h>
     6 #include <cppunit/extensions/HelperMacros.h>
     7 #include <cppunit/BriefTestProgressListener.h>
     8 #include <cppunit/extensions/TestFactoryRegistry.h>
     9 
    10 
    11 class Test : public CPPUNIT_NS::TestCase
    12 {
    13   CPPUNIT_TEST_SUITE(Test);
    14   CPPUNIT_TEST(testHelloWorld);
    15   CPPUNIT_TEST_SUITE_END();
    16 
    17 public:
    18   void setUp(void) {}
    19   void tearDown(void) {} 
    20 
    21 protected:
    22   void testHelloWorld(void) { std::cout << "Hello, world!" << std::endl; }
    23 };
    24 
    25 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
    26 
    27 int main( int argc, char **argv )
    28 {
    29   // Create the event manager and test controller
    30   CPPUNIT_NS::TestResult controller;
    31 
    32   // Add a listener that colllects test result
    33   CPPUNIT_NS::TestResultCollector result;
    34   controller.addListener( &result );        
    35 
    36   // Add a listener that print dots as test run.
    37   CPPUNIT_NS::BriefTestProgressListener progress;
    38   controller.addListener( &progress );      
    39 
    40   // Add the top suite to the test runner
    41   CPPUNIT_NS::TestRunner runner;
    42   runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
    43   runner.run( controller );
    44 
    45   return result.wasSuccessful() ? 0 : 1;
    46 }
    47 
    48 
    (5)编译,运行
            有两种方法
            (a) 链接静态库。编译命令:
           g++ -L/usr/local/lib/libcppunit.a mytest.cpp -lcppunit -ldl -o mytest
           运行:
           ./mytest
           结果:
            Test::testHelloWorldHello, world!
             : OK
             (b) 链接动态库。编译命令:
           g++ mytest.cpp -lcppunit -ldl -o mytest
           运行时要先设置环境变量LD_LIBRARY_PATH到cppunit的安装目录,也就是/usr/local/lib,命令如下:
           export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
           然后运行:
           ./mytest
           结果:
            Test::testHelloWorldHello, world!
             : OK


    版权所有,欢迎转载
  • 相关阅读:
    jquery ajax 跨域请求【原】
    纯js异步无刷新请求(只支持IE)【原】
    正则表达式高级用法【原】
    所有HTTP请求参数及报文查看SERVLET【原】
    AES加密【转】
    Object.prototype.toString.call() 区分对象类型
    js中的preventDefault与stopPropagation详解
    在项目中如何利用分页插件呢?
    Iframe 在项目中的使用总结
    在项目中那个少用if else 语句,精简代码,便于维护的方法(1)
  • 原文地址:https://www.cnblogs.com/xiaotie/p/311149.html
Copyright © 2020-2023  润新知