🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 概述 - using C++14, C++17 and later (C++11 support is in v2.x branch - Catch2是一个C++的单元测试框架,可以提供基本的微基准测试功能和简单的BDD宏 。 - 它通过头文件提供支持,无其他库依赖 ,是一个简单的C++单元测试框架,使用简单,只需要包含catch.hpp即可 。 - 相对于其他的C++单元测试库,Catch2使用更简单 。 ## 实例 **Example unit test** ```c #include <catch2/catch_test_macros.hpp> #include <cstdint> uint32_t factorial( uint32_t number ) { return number <= 1 ? number : factorial(number-1) * number; } TEST_CASE( "Factorials are computed", "[factorial]" ) { REQUIRE( factorial( 1) == 1 ); REQUIRE( factorial( 2) == 2 ); REQUIRE( factorial( 3) == 6 ); REQUIRE( factorial(10) == 3'628'800 ); } ``` **Example microbenchmark** ```c #include <catch2/catch_test_macros.hpp> #include <catch2/benchmark/catch_benchmark.hpp> #include <cstdint> uint64_t fibonacci(uint64_t number) { return number < 2 ? number : fibonacci(number - 1) + fibonacci(number - 2); } TEST_CASE("Benchmark Fibonacci", "[!benchmark]") { REQUIRE(fibonacci(5) == 5); REQUIRE(fibonacci(20) == 6'765); BENCHMARK("fibonacci 20") { return fibonacci(20); }; REQUIRE(fibonacci(25) == 75'025); BENCHMARK("fibonacci 25") { return fibonacci(25); }; } ```