当前位置: 首页 > article >正文

C/C++生态工具链——单元测试工具Catch2简介

一,关于单元测试

        单元测试指对软件中的最小可测试单元进行检查和验证,软件中的最小可测试单元有函数、接口、类等。测试时,最小可测试单元与程序中的其他部分相隔离。常用的单元测试框架有: Catch、Boost.Test、googletest、UnitTest++。常见的两种测试模式:TDD(测试驱动开发)和BDD(行为驱动开发)。

二,TDD模式简介

        测试驱动开发 (TDD,全称test-driven-development) 是一种软件开发实践,专注于在开发实际代码之前创建单元测试用例。它是一种迭代式的软件开发流程,在迭代的过程中将编码、单元测试和代码重构结合起来。TDD在测试失败时修改或编写新代码,防止重复测试同一个bug。

TDD的步骤

1.根据对功能的假设来创建测试单元

2.测试失败后更改代码,直到运行正常

3.重构代码。检查冗余的代码,优化代码的结构。

TDD的优点

大大减少了开发时导致的缺陷数量。

后续花在调试上的时间会更少。

新功能的添加和测试变得更加容易。

测试覆盖率高于传统的开发模式。

三,BDD模式简介

        行为驱动开发(BDD,全称behavior-driven-development),是基于TDD做的修改,BDD和TDD之间有很多相似之处,因为它们都需要开发人员在编写代码之前先编写测试用例以通过测试。但是TDD更侧重于单独测试较小的功能,而BDD更侧重于从用户的角度验证应用程序的业务功能。 

BDD的步骤

1.给定业务功能的场景

2.定义场景的执行步骤,编写测试用例

3.运行执行步骤的测试代码,如果失败了,修改步骤对应的代码,直到测试通过

BDD的语言描述形式

GIVE-WHEN-THEN模式, 参考下面两个DSL语言样例

场景1:

Scenario: Blog Search
Given I visit the blog page
When I search for “BDD”
Then I get posts related to BDD

场景2:

Scenario: user logs in to application
Given authorized user “John”
When I enter “John” in the username field
And I enter “sekret1” in the password field
And I click the login button
Then the homepage should open

BDD的优点

        由于BDD使用非常简单的语言来描述测试过程,更方便沟通和迭代,使产品经理、开发者和测试者都可以深入了解项目的进展,使开发出来的产品可以快速响应用户的反馈和需求。BDD可以最大限度的减少因误解需求和验收标准而导致的返工。

        下面开始介绍Catch2的用法,并利用Catch2实现BDD风格的测试。

四,Catch2介绍

        Catch2是主要用于C++开发场景的单元测试框架&

http://www.lryc.cn/news/2418447.html

相关文章:

  • java jdbc reparecall_JDBC学习笔记
  • RO11 -用RemObjects SDK创建异步调用客户端
  • Windows7系统sfc_os.dll文件丢失问题
  • 常见游戏外挂分类及原理概述
  • 播放器比的就是画质
  • 电脑回收站无法清空:原因及解决方案大揭秘
  • myeclipse部署时An internal error occurred 错误的几种情况
  • verilog实现多周期处理器之——(六)简单算数操作指令的实现
  • 本人跑fedora 13的烦恼
  • java定时器Timer 类的使用及Timer already cancelled问题解决
  • Apache License Version 2.0中文翻译版
  • 关于Tapestry5运行时报错的解决方法。
  • TransactionScope使用(二)——msdtc不可用
  • hmailserver的反垃圾邮件功能
  • 基于python豆瓣电影爬虫数据可视化分析推荐系统(完整系统源码+数据库+详细文档+论文+详细部署教程)
  • 《黄金瞳》 台词:你人真好!
  • FreeBSD下Mount总结
  • ISA Server 2004的安装与SMTP 筛选器的使用
  • ExtJS中表格控件的使用,属性设置和数据的获取
  • 深入浅出—设计模式重要原则
  • 网页客服代码集锦
  • TC20下的内联汇编 (转)
  • 让你的Vista,Win7变成多国语言版!
  • 信托公司利用境外资金的两大途径
  • Linux中的Netlink详解
  • Dialog.dismiss()方法无效的解决方法
  • 如何利用python盗qq_一个团队为了让我帮他提高流量,竟然盗我QQ,没办法,我只好帮他用python刷了刷流量!...
  • 电脑浏览器打不开但是可以上网微信和qq可以正常登录的解决办法
  • 中央处理器 —— CPU的功能和基本结构
  • PGXZ-腾讯全功能分布式关系数据集群