zoukankan      html  css  js  c++  java
  • boost test学习(一)

    据说相比之cppunit等其它的测试工具更好用,反正当初cppunit没能够在实际工作中派上用场,今天突然看到boost test库,而且是boost库内置的,研究一下。

    test库将测试程序定义为一个测试模块,由测试安装,测试主体,测试清理和测试运行器四个部分组成。测试主体是测试模块的实际运行部分,由测试用例和测试套件组织成测试树的形式。

    刚开始测试时,老是会报如下的链接错误:

    libboost_unit_test_framework-vc90-mt-gd-1_47.lib(unit_test_main.obj) : error LNK2019: 无法解析的外部符号 "class boost::unit_test::test_suite * __cdecl init_unit_test_suite(int,char * * const)" (?init_unit_test_suite@@YAPAVtest_suite@unit_test@boost@@HQAPAD@Z),该符号在函数 _main 中被引用
    1>E:\study\test_boost_suit\Debug\test_boost_suit.exe : fatal error LNK1120: 1 个无法解析的外部命令

    怀疑是系统环境没设对,打开其它几个使用boost库的程序,编译,运行正常。再到boost目录中查找对应的lib,也能找到,网上再看别人类似的错误,然后将#define BOOST_TEST_MODULE maintest放在#include <boost/test/unit_test.hpp>之前,如下代码排布:

    // test_boost_suit.cpp : 定义控制台应用程序的入口点。
    //
     
    #define BOOST_TEST_MODULE maintest
     
    #include <boost/test/unit_test.hpp>

    编译通过。

    这次测试验证了如何用boost test完成一个测试套件的问题,由于源代码少,贴出来。

    // test_boost_suit.cpp : 定义控制台应用程序的入口点。
    //
     
    #define BOOST_TEST_MODULE maintest
     
    #include <boost/test/unit_test.hpp>
    #include <boost/smart_ptr.hpp>
    using namespace boost;
    using namespace boost::unit_test;
     
     
    BOOST_AUTO_TEST_SUITE(s_smart_ptr)
     
    BOOST_AUTO_TEST_CASE(t_scoped_ptr)
    {
        scoped_ptr<int> p(new int(874));
        BOOST_CHECK(p);
        BOOST_CHECK_EQUAL(*p, 875);
     
        p.reset();
        BOOST_CHECK(p == 0);
    }
     
    BOOST_AUTO_TEST_CASE(t_shared_ptr)
    {
        shared_ptr<int> p(new int(100));
     
        BOOST_CHECK(p);
        BOOST_CHECK_EQUAL(*p, 100);
        BOOST_CHECK_EQUAL(p.use_count(), 1);
        shared_ptr<int> p2 = p;
        BOOST_CHECK_EQUAL(p, p2);
        BOOST_CHECK_EQUAL(p2.use_count(), 2);
     
        *p2 = 255;
        BOOST_CHECK_EQUAL(*p, 255);
        BOOST_CHECK_GT(*p, 200);
    }
     
    BOOST_AUTO_TEST_SUITE_END()
  • 相关阅读:
    OOP侧边分享按钮
    表格基础操作
    行为型模式之自定义语言的实现(解释器模式)
    行为型模式之请求发送者与接收者解耦(命令模式)
    行为型模式之请求的链式处理(职责链模式)
    Http、Socket、WebSocket之间联系与区别
    日期时间工具类DateTimeUtil(基于Java8的LocalDateTime)
    结构型模式之代理模式
    Java8 函数式接口@FunctionalInterface的使用说明
    结构型模式之实现对象的复用(享元模式)
  • 原文地址:https://www.cnblogs.com/luhouxiang/p/2381199.html
Copyright © 2011-2022 走看看