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()
posted @ 2012-03-05 23:57  绿色的麦田  阅读(3378)  评论(0编辑  收藏  举报