了解 Boost 单元测试框架

发表于:2013-9-02 11:13

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:nodeathphoenix    来源:51Testing软件测试网采编

  清单 22. 同时包含装备和非装备测试的 Boost 测试套件

#define BOOST_TEST_MODULE example
#include <boost/test/included/unit_test.hpp>
#include <iostream>
struct F {
F() : i( 0 ) { std::cout << "setup" << std::endl; }
~F()          { std::cout << "teardown" << std::endl; }
int i;
};
BOOST_AUTO_TEST_SUITE( test )
BOOST_FIXTURE_TEST_CASE( test_case1, F )
{
BOOST_CHECK( i == 1 );
++i;
}
BOOST_AUTO_TEST_CASE( test_case2 )
{
BOOST_REQUIRE( 2 > 1 );
}
BOOST_AUTO_TEST_CASE( test_case3 )
{
int i = 1;
BOOST_CHECK_EQUAL( i, 1 );
++i;
}
BOOST_AUTO_TEST_SUITE_END()

  在 清单 22 中,在一个测试用例上定义和使用了装备。Boost 还允许用户通过 BOOST_GLOBAL_FIXTURE (<Fixture Name>) 宏定义和使用全局装备。可以定义任意数量的全局装备,因此可以把初始化代码分割为多个部分。清单 23 使用一个全局装备。

  清单 23. 使用全局装备进行回归测试初始化

#define BOOST_TEST_MODULE example
#include <boost/test/included/unit_test.hpp>
#include <iostream>
struct F {
F()           { std::cout << "setup" << std::endl; }
~F()         { std::cout << "teardown" << std::endl; }
};
BOOST_AUTO_TEST_SUITE( test )
BOOST_GLOBAL_FIXTURE( F );
BOOST_AUTO_TEST_CASE( test_case1 )
{
BOOST_CHECK( true );
}
BOOST_AUTO_TEST_SUITE_END()

  对于多个装备,它们的设置和清除按照声明的次序执行。在 清单 24 中,先调用 F 的构造函数,然后是 F2 的;对于销毁函数也是这样。

  清单 24. 在回归测试中使用多个全局装备

#define BOOST_TEST_MODULE example
#include <boost/test/included/unit_test.hpp>
#include <iostream>
struct F {
F()           { std::cout << "setup" << std::endl; }
~F()         { std::cout << "teardown" << std::endl; }
};
struct F2 {
F2()           { std::cout << "setup 2" << std::endl; }
~F2()         { std::cout << "teardown 2" << std::endl; }
};
BOOST_AUTO_TEST_SUITE( test )
BOOST_GLOBAL_FIXTURE( F );
BOOST_GLOBAL_FIXTURE( F2 );
BOOST_AUTO_TEST_CASE( test_case1 )
{
BOOST_CHECK( true );
}
BOOST_AUTO_TEST_SUITE_END()

  注意,不能将全局装备作为对象用在单个测试中。也不能在测试中直接访问它们的公共/受保护的非静态方法或变量。

  结束语

  本文介绍了最强大的开放源码回归测试框架之一:Boost。讨论了基本的 Boost 检查、模式匹配、浮点比较、定制检查、测试套件的组织(包括手工和自动)和装备。请通过 Boost 文档了解更多信息。本系列的后续文章将介绍 cppUnit 等开放源码回归测试框架。

55/5<12345
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号