没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-05-19 14:09:45.000|阅读 1899 次
概述:测试驱动开发(TDD)已经是一种非常流行的开发方式了,在Java和.Net中都提供了非常好的单元测试框架,最近研究C++下面的单元测试,发现其实在C++中还是有很多选择。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
show_progress 设置为 yes 将在运行测试时显示当前的进度。
测试驱动开发( TDD 已经是一种非常流行的开发方式了 Java 和 .Net 中都提供了非常好的单元测试框架,#defin BOOST_TEST_MODULE example 或者 #defin BOOST_AUTO_TEST_MAIN 否则测试模块初始化函数需要手动实现;然后宏 “ BOOST_AUTO_TEST_SUITE minimal_test 将创建一个名为 minimal_test 测试套件, 首先。并将其加入到测试模块中。宏 “ BOOST_AUTO_TEST_CASE my_test 将创建一个名为 “ my_test 测试用例,并将其加入到测试套件 minimal_test 中。 #defin BOOST_TEST_MODULE example 最后将导致 “ multipl definit of init_unit_test_suit int, char** 错误。>BOOST_AUTO_TEST_CASE 不能满足需求, 有时候需要对一个测试用例使用不同的参数运行测试。此时需要对测试用例进行手动注册(来自 Boost 文档) free_test_function 然后定义 init_unit_test_suite 函数, 示例代码将会分别以参数 1 2 3 4 5 运行测试 free_test_function 五次。手动注册需要定义测试函数。并在该函数中将测试用例加入到主测试套件中。 BOOST_PARAM_TEST_CASE 有三个参数:第一个参数为测试函数指针,第二个与第三个为输入参数迭代器。 Boost Test 采用 RAII 技术来实现夹具: 如果在多个测试用例中需要使用数据库连接。>
< 测试驱动开发( TDD 已经是一种非常流行的开发方式了 Java 和 .Net 中都提供了非常好的单元测试框架。最近研究 C++ 下面的单元测试,发现其实在 C++ 中还是有很多选择:
先来看一个简单的 Boost Test 示例(来自 Boost 文档)
测试初步
1#define BOOST_TEST_MODULE example 2
3
#include <boost/test/unit_test.hpp> 4
5
6
int j 7
int add int i.; 8
9
10
11
BOOST_AUTO_TEST_SUITE minimal_test 12
13
14
15
BOOST_AUTO_TEST_CASE my_test 16
17
{18
2 == 5 19
BOOST_CHECK add 2.;20
2 == 4 21
BOOST_REQUIRE add 2.;22
2 != 4 23
if add 2. 24
25
BOOST_ERROR "oops!" ;26
2 != 4 27
if add 2. 28
29
BOOST_FAIL "oops!" ;30
2 != 4 31
if add 2. 32
33
throw "oops!";34
2 == 4,35
BOOST_CHECK_MESSAGE add 2. "add .. result: " << add 2, 2 ;36
2 ,37
BOOST_CHECK_EQUAL add 2. 4 ;38
39
}40
41
42
43
BOOST_AUTO_TEST_SUITE_END 44
45
需要定义
原因是一个测试顺序中只允许存在一个定义一个测试模块。测试模块中存在一个主测试套件,所有未明确包含到测试套件中的测试用例将被包含到主测试套件中。 关于测试模块常犯的一个错误是不同的测试文件中定义不同的
下面是具体的测试过程了顺序中展示了七种不同的方式来对函数 add 进行测试:
抛出异常方式:测试框架将捕获该异常并打印出错误信息;
前面提到
单参数测试用例
#include <boost/test/included/unit_test.hpp><boost/test/parameterized_test.hpp>using namespace boost::unit_test;void free_test_funct int i < 4 /* test assertion */ ;char* argv[] test_suite* init_unit_test_suit int argc. 2, int params[] = { 1. 3, 4, 5 };params, add BOOST_PARAM_TEST_CASE &free_test_function. params+5 ;return 0;
#include
{
BOOST_CHECK i
}
{
framework::master_test_suit .
}
这时候要用到夹具来自动执行安装、清理过程。
1struct <fixture-name>
{2
3
<fixture-name> ; // 装置 4
5
~<fixture-name> ; // 装配 6
7
};
只需要定义一个类, 自定义一个夹具非常简单。分别在类的构造函数和析构函数中进行装置和拆卸。另外,类的公有成员在测试用例中可以直接引用而不需要加上对象名作为前缀。例如:
夹具示例
1#define BOOST_TEST_MODULE example 2
3
#include <boost/test/included/unit_test.hpp> 4
5
6
7
struct F 8
9
{10
11
F : i 0 12
13
{14
15
//std::cout << " 创建夹具 " << std::endl;16
17
}18
19
~F 20
21
{22
23
//std::cout << " 销毁夹具 " << std::endl;24
25
}26
27
28
29
int i;30
31
};32
33
34
35
BOOST_FIXTURE_TEST_SUITE const_string_test. 36
37
38
39
BOOST_FIXTURE_TEST_CASE test_case1. 40
41
{42
43
BOOST_CHECK i == 1 ;44
45
++i;46
47
}48
49
50
51
BOOST_FIXTURE_TEST_CASE test_case2 52
53
{54
1 55
BOOST_CHECK_EQUAL i.;56
57
}58
59
60
61
BOOST_AUTO_TEST_CASE test_case3 62
63
{64
65
BOOST_CHECK true ;66
67
}68
69
70
71
BOOST_AUTO_TEST_SUITE_END 72
73
夹具将在该测试套件的所有测试用例中可用。使用宏 BOOST_FIXTURE_TEST_CASE 代替宏 BOOST_AUTO_TEST_CASE 建立测试用例, 使用宏 BOOST_FIXTURE_TEST_SUITE 第二个参数中指定夹具来代替宏 BOOST_AUTO_TEST_SUITE 以建立测试套件。可以在该测试用例中使用夹具。需要注意的每一个测试用例中都将会执行夹具的装置和卸载过程。 log_level 中设置, 以上级别以由低到高的级别排列。还可以使用参数 log_format 来制定输出格式。 test.ex – build_info=y – log_level=all 下面是常用的测试参数: 可以向测试顺序传送参数来定制测试结果。>
Boost Test 中包括了十个级别的日志信息:
可以在运行时参数
如 “
build_infoa 设置为 yes 将在开始运行测试前打印当前的操作系统版本、编译器版本等信息;
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:博客园面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号