网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
3、catch2测试框架学习
3.1、概念
简单易用,只需要引入一个头文件
测试case可以分割为sections: 每个setcion都是独立的运行单元
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)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**