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++开发场景的单元测试框架&

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员与背包客_CoderZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值