2024年C C++最全catch2测试框架学习_catch2中的单元测试test_case,2024年最新分布式架构演进+相关笔记参考

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

BDD式的测试模式:可以使用Given-When-Then section来做BDD测试,行为测试,是一种从用户行为的角度出发的开发方法,他强调使用自然语言来描述系统的方法,并将这些描述转化为可执行的测试用例。

TDD:核心理念就是在编码之前编写好测试用例,

核心的assertion宏来做比较。用标准的C++运算符来做比较,但是可以分解表达式,记录表达式等号左侧和右侧的值。

3.2、实践

获取头文件

运行demo实践

#define CATCH_CONFIG_MAIN

#include "catch2/catch.hpp"

int Factorial( int number ) {
   return number <= 1 ? number : Factorial( number - 1 ) * number;  // fail
// return number <= 1 ? 1      : Factorial( number - 1 ) * number;  // pass
}

TEST_CASE( "Factorial of 0 is 1 (fail)", "[single-file]" ) {
    REQUIRE( Factorial(0) == 1 );
}

TEST_CASE( "Factorials of 1 and higher are computed (pass)", "[single-file]" ) {
    REQUIRE( Factorial(1) == 1 );
    REQUIRE( Factorial(2) == 2 );
    REQUIRE( Factorial(3) == 6 );
    REQUIRE( Factorial(10) == 3628800 );
}


解析代码:

#define CATCH_CONFIG_MAIN ,这个宏定义了catch的main函数。

TEST_CASE表示一次测试用例在里面实现单元测试逻辑:并且也可以为其取名字或者加标签。

测试名称,必填,字符串类型。可填写任意字符串,需要保证全局唯一。tags,标签名,可选,字符串类型。字符串中需要使用方括号将标签名包含,可填写多个标签。标签名无需全局唯一。标签的意义在于可以使用命令参数指定某个系列的相同标签的测试用例去执行。还有一些特殊标签可以参考Catch2/docs/test-case-and-sections.md at devel ·catchorg/Catch2 (github.com)

Catch2的断言宏很少,核心的只有REQUIRECHECK这两个。REQUIRE宏在断言失败时,会退出当前单元测试,不再执行后续代码,而CHECK宏在断言失败后,依旧会执行后续的代码。

在测试用例TEST_CASE内部还有定义section,定义的每个section都是一段独立的逻辑,与其他section无关。section使用宏SECTION定义,是单独的,顺序执行的。section中可以内嵌任意多个section(受限于堆栈的大小)。可将内嵌section的结构可以理解为一个树结构,树的根节点是单元测试的起始代码,每个含有内嵌section的section都是根的一个子树,没有内嵌section的section是树的叶子节点。Catch2会遍历执行树的所有路径(根到叶子节点),每个路径的执行均与其他路径的执行不相关。

#define CATCH_CONFIG_MAIN
#include <iostream>
#include <vector>
#include "catch2/catch.hpp"
using namespace std;

TEST_CASE("vectors can be sized and resized", "[vector]"){


![img](https://img-blog.csdnimg.cn/img_convert/4b01b8adbe7e241db81a0d7b351a96dc.png)
![img](https://img-blog.csdnimg.cn/img_convert/29786e68db7e4a1dca5501ebbc920542.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值