原文地址:http://hi.baidu.com/shuiyuan2004/blog/item/7d4b43eccdf5c2d32f2e213f.html

C++单元测试框架的比较

单元测试现在已经成为标准的编程实践,但是C++缺少Java和.Net平台语言的反射机制,所以无法枚举测试方法,必须手工添加,或者使用一些特别的宏,弄得代码非常难看。Java语言单元测试是JUnit的天下,C#基本上都用NUnit,而C++则群花怒放,单元测试框架非常多,JUnit移植过来的CppUnit,Boost::test,CppTest,CxxTest, TUT等等。但是解决方案最好的是CxxTest和TUT,CxxTest采用的方法比较特殊,用Perl分析C++的源文件,从中抽取测试方法,创建TestSuite。语法与JUnit非常相似,没有使用高级的C++特性,也没有定义特别的宏,无须写额外的代码。TUT也是一个不错的解决方案,利用高级C++ Template功能,必须比较新的编译器才支持,比如VC6和VS.NET 2002就不支持,必须VS.NET 2003以上或者Intel C++ Complier 8.1以上。

1、 TUT

结构框架简单。添加新的测试工作量小;无须注册测试;可移植性好(因其只需两个头文件,就可以完成测试工作);便于装卸;提供接口可以扩展其输出方式等。

最大的优点:轻量级,便于装卸和可扩展其输出方式;

缺点:断言似乎不是很好,只用了一个ensure()函数,不知道对复杂的测试是否支持;输出的测试结果较为简单。

2、 Boost::test

结构框架较为复杂。添加新的测试工作量也不大;提供多种测试方法,可注册测试用例,也可不注册;可移植性一般;装卸不易;在控制异常、崩溃方面的能力胜过其它所有对手;拥有良好的断言功能;大概能支持多种输出方式,但更改输出方式不易;支持测试套件。

最大的优点:控制异常崩溃的能力、良好的断言、输出结果较为详细、编写测试的方法灵活;

缺点:结构框架较为复杂,更改输出方式不易,装卸不易。

3、 CXXTest

结构框架的复杂性处于TUT与boost::test之间。添加新的测试工作量非常小;无须注册测试用例;可移植性很好;便于装卸;控制异常、崩溃方面的能力也不错;拥有良好的断言功能;支持多种输出方式;支持测试套件。

最大的优点:编译即测试方式,并且可以双击结果行立即定位到相应的源代码,相当吸引人;支持多种输出,输出结果较为详细;编写测试简单;

缺点:需要用到perl对测试代码进行文法扫描,生成可执行代码,需要用到makefile文件(不是必须);准备工作比较麻烦。

转载于:https://www.cnblogs.com/strinkbug/archive/2008/12/20/1359028.html

C++单元测试框架的比较(zz)相关推荐

  1. python 单元测试_聊聊 Python 的单元测试框架(一):unittest

    本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 前言 说到 Python 的单元测试框架,想必接触过 Python 的朋友脑袋里第一个想到的就是 unittest. ...

  2. python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...

    1.用例执行顺序 unittest默认会按照ascii码的顺序,依次执行.类名--方法名排序,使用discover也是默认排序.如果不想使用默认排序,就使用testsuite测试集的方式. impor ...

  3. pytest测试框架_聊聊 Python 的单元测试框架(三):最火的 pytest

    本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 一.介绍 本篇文章是<聊聊 Python 的单元测试框架>的第三篇,前两篇分别介绍了标准库 unittes ...

  4. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  5. [测试]单元测试框架NUnit

    说到测试,相信大家都或多或少了解. 按照各自分类,就自己知道包括 A.单元测试.集成测试.系统测试 B.白盒测试.黑盒测试 C.压力测试.性能测试.安全测试 ...... 反正是太多太多.就做开发以来 ...

  6. Python单元测试框架Pyunit 的使用

    Python单元测试框架Pyunit 使用示例: 1 import unittest 2 3 class Person: 4 def age(self): 5 return 34 6 def name ...

  7. 单元测试框架之unittest(一)

    一.单元测试的含义 unittest单元测试框架的设计灵感来源于Junit(Java语言的单元测试框架),它与其他语言的单元测试框架风格相类似,支持自动化测试.为测试共享setUp和shutDown. ...

  8. μCUnit,微控制器的单元测试框架

    在MCU on Eclipse网站上看到Erich Styger在8月26日发布的博文,一篇关于微控制器单元测试的文章,有很高的参考价值,特将其翻译过来以备学习.原文网址:https://mcuone ...

  9. python单元测试框架-Python unittest单元测试框架总结

    什么是单元测试 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 比如对于函数abs(),我们可以编写的测试用例为: (1)输入正数,比如1.1.2.0.99,期待返回值与输入 ...

最新文章

  1. Linux vim使用心得III
  2. Spring4 MVC + REST + List + Bootstrap 简单示例
  3. Gitlab创建第一个项目
  4. URAL 1033 Labyrinth
  5. Windows 7+Ubuntu 16.04 双系统安装
  6. 《计算复杂性:现代方法》——第0章 记 号 约 定 0.1 对象的字符串表示
  7. 清除chrome69缓存批处理(保存为.bat格式文件,如test.bat)
  8. Linux获取外网IP
  9. 二层交换机和三层交换机的区别
  10. nacos + springcloud gateway 出现503错误
  11. ASP.NET网页打印
  12. Flutter上传多张图片
  13. 强化学习代码实操和讲解(三)
  14. 采集绿盾网的10个经典方法
  15. PAT乙级(Basic Level)练习题 星际密码
  16. 软件架构设计师:用户界面设计的原则
  17. 肛瘘:湿热毒火,下注于肛门而成
  18. 轨迹预处理(轨迹清洗)
  19. 杜比dss200服务器重装,杜比dss200服务器恢复系统操作
  20. 1.html基础标签

热门文章

  1. 连续内存分区式内存管理
  2. leetcode 383. 赎金信 思考分析
  3. 形态学操作——击中击不中变换
  4. FIFA的完整形式是什么?
  5. 网络名称 转换 网络地址_网络地址转换| 计算机网络
  6. 编写一个汇编语言程序,将字符串Hello World中的全部小写字母转换为大写字母,并存放回原地址处。
  7. MySQL 纯insert_MySQL使用INSERT插入多条记录
  8. linux操作系统之信号量、互斥量在进程间的同步、文件锁
  9. C++ const 与 extern
  10. c++中new的总结(动态管理,malloc存在的问题,malloc与new的区别)