/************************************************************************/
/*单元测试框架UTF(Unit Test Framework)
一个用于单元测试的基于命令行界面的测试套件UTF,具有单元测试、检测内存泄露、监控程序运行的功能。
test库将测试程序定义为一个测试模块,由测试安装,测试主体,测试清理和测试运行器四个部分组成。
1:测试主体是测试模块的实际运行部分,由测试用例和测试套件组织成测试树的形式。
2:测试用例是一个包含多个测试断言的函数, 是可以被独立执行测试的最小单元, 各个测试用例之间是无关的, 发生的错误不会影响其他测试用例.
3:测试套件是测试用例的容器,可以嵌套,包含一个或多个测试用例,将多个测试用例分组管理,共享安装/清理代码, 更好的组织测试用例。
4:主测试套件, 任何UTF单元测试程序必须存在唯一一个主测试套件, 它是整个测试树的根节点, 其他测试套件都是它的子节点. 主测试套件的定义可以使用宏BOOST_TEST_MAIN或者
BOOST_TEST_MODULE, 它们必须出现在<boost/test/unit_test.hpp>之前.
UTF中的测试断言:BOOST_LEVEL_ITEM
LEVEL:
WARN 警告级,不增加错误数量,不影响程序运行
CHECK 检查级别,增加错误数量,不影响程序运行
REQUIRE 最高级别,增加错误数量,程序终止运行
ITEM:
EQUAL/CLOSE 测试相等性
GE/GT/LT/LE/NE 测试不等性
(NO_)THROW 是否抛出异常
MESSAGE 测试信息
*/
/************************************************************************/
#define BOOST_TEST_MODULE test_module // 定义boost测试模块,宏后面的 test_xxxx不重复就行(这行语句必须存在,可用于标记不同模块的测试)
#include <boost/test/unit_test.hpp> // 引用boost单元测试头文件
#include <boost/smart_ptr.hpp>
//using namespace boost::unit_test;
BOOST_AUTO_TEST_SUITE(s_smart_ptr) // 测试套件开始
BOOST_AUTO_TEST_CASE(t_scoped_ptr) // 测试用例1
{
boost::scoped_ptr<int> p(new int(874));
BOOST_CHECK(p); // 成功
BOOST_CHECK_EQUAL(*p, 874);// 成功
BOOST_CHECK_EQUAL(*p, 875);// 失败,输出如下信息
//文件目录\boost_test.cp(44):error:in "test_module/t_scoped_ptr" : check *p == 875 has failed[874!= 875]
p.reset();
BOOST_CHECK(p == 0);// 成功
}
BOOST_AUTO_TEST_CASE(t_shared_ptr) // 测试用例2
{
boost::shared_ptr<int> p(new int(100));
BOOST_CHECK(p);
BOOST_CHECK_EQUAL(*p, 100); // 判断相等
BOOST_CHECK_EQUAL(p.use_count(), 1);// 成功,一处引用(p)
boost::shared_ptr<int> p2 = p;
BOOST_CHECK_EQUAL(p, p2);
BOOST_CHECK_EQUAL(p2.use_count(), 2);// 成功,两处引用(p,p2)
*p2 = 255;
BOOST_CHECK_EQUAL(*p, 255);
BOOST_CHECK_GT(*p, 200); // 判断不相等
getchar();
}
BOOST_AUTO_TEST_SUITE_END() // 测试套件结束