Catch 使用教程(入门,官方文档翻译)
原文地址:https://github.com/catchorg/Catch2/blob/master/docs/tutorial.md译者注:当前文档并不是官方文档的直译。在翻译的过程中我删除部分原文中的内容并添加了一些自己的理解,可能有偏差,请见谅
- 获得 Catch
- 如何使用?
- 编写测试用例
- 测试用例和测试区段
- BDD-Style
- 小结
- 参数类型化测试
- 后续学习与使用
获得 Catch
获得Catch最简单的方式是下载最新的 single header version。这个头文件由若干其他独立的头文件合并而成。
你也可以使用其他方法获得Catch,例如使用CMake来构建编译版Catch,这可以提高项目的编译速度。
完整的Catch包含测试、说明文档等内容,你可以从GitHub下载完整的Catch。Catch官方链接为:http://catch-lib.net ,此链接将重定向到GitHub。
如何使用 Catch?
Catch是header-only的,故你只需要将Catch的头文件放到编译器可以发现的路径既可。
下面的教程默认你的编译器可以发现并使用 Catch。
如果你使用Catch的预编译形式,即已经编译并生成了Catch链接库(.lib 或者 .a 文件),你的Catch头文件包含形式应该形如:#include <catch2/catch.hpp>
。
编写测试用例
让我们从一个简单的示例开始(examples/010-TestCase.cpp)。假设你已经写了一个用于计算阶乘的函数,现在准备测试它。(TDD的基本原则是先写测试代码,为了方便学习,这里先忽略这个原则)
unsigned int Factorial( unsigned int number ) {
return number <= 1 ? number : Factorial(number-1)*number;
}
为了尽量简单,我们把所有的代码都放到一个源文件中。
#define CATCH_CONFIG_MAIN // 当前宏强制Catch在当前编译单元中创建 main(),这个宏只能出现在一个CPP文件中,因为一个项目只能有一个有效的main函数
#include "catch.hpp"
unsigned int Factorial( unsigned int number ) {
return number <= 1 ? number :