boost test学习(一)

摘要:
据说cppunit比其他测试工具,比如cppunit要好。无论如何,cppunit一开始并没有在实际工作中使用。今天,我突然看到了boost测试库,它内置在boost库中。让我们研究一下。测试库将测试程序定义为测试模块,它由四个部分组成:测试安装、测试主体、测试清理和测试运行器。测试主体是测试模块的实际运行部分,它由测试用例和测试套件组织成测试树。在测试开始时,始终报告以下链接错误:libboost_uni

据说相比之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()

免责声明:文章转载自《boost test学习(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java.security KeyPairGeneratorgroovy-运算符下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

#学习分享#开发基础知识之前端测试(一)

前言:本文用于2018/1/30晚内部分享。主题:前端单元测试 正文: 一、思考 我的目标是,如何浅入本次的主题,让愿意接收陌生信号的“对象”快速简单的get到信号,并且对本次分享产生一个小兴趣。 二、What     本章节主要讲述前端单元测试做什么,vue单元测试做什么。   (1) 基础概念 测试的概念:测试是检测你的应用代码(也叫“生产代码”)...

PowerMock+Junit4 Maven配置

       在单元测试中,我们往往想去独立地去测一个类中的某个方法,但是这个类可不是独立的,它会去调用一些其它类的方法和service,于是JMockit、PowerMock 和 Mockito就诞生了。最近在学习PowerMock时发现网上对于他的Maven配置说明不是很详细,导致在使用时会报错,显示ClassNotFoundException和NoC...

【集成学习】sklearn中xgboost模块中plot_importance函数(绘图--特征重要性)

直接上代码,简单 1 # -*- coding: utf-8 -*- 2 """ 3 ############################################################################### 4 # 作者:wanglei5205 5 # 邮箱:wanglei5205@126.com 6 # 代码:htt...

Sql多条件排序

多条件排序可以通过在order by语句后面使用case when then条件语句来实现。 select * from 表名 ORDER BY case when 条件 then 0 else 1 end 例子: 1.创建表case_test 共有id,case_type,case_location,case_way四个字段。 2.导入数据: INSER...

webService 服务端搭建

  首先,下载CXF,官网(http://cxf.apache.org/),具体位置如下图:      解压后,得到以下目录   下面,我们开始建立工程,在新建的工程lib目录下复制上述lib中的所有文件,特别是endorsed文件夹也要原样复制。 1        WebService的服务器端 1)      创建工程   在eclipse/myEcl...

Jenkins操作手册 巨详细,一篇足矣!

一、持续集成相关概念 1.1、什么是持续集成? 随着软件开发复杂度的不断提高,团队开发成员间如何更好的协同工作以确保软件开发的质量已经成为开发过程中不可回避的问题。尤其是近年来敏捷开发在软件领域越来越火,如何能在不间断变化的需求中快速适应和保证软件的质量显得尤其重要。持续集成正是针对这一问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至...