catchorg/Catch2

▲ 2 stars today★ 21,518⑂ 3,489

A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)

About catchorg/Catch2

catchorg/Catch2 is an open-source project on GitHub, mainly written in C++. A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch It currently holds 21,518 stars and 3,489 forks with 448 open issues, and was last pushed on 2026-10-08 (repository created 2010-11-08).

Project Overview

Git Homed tracks it on the Today's Trending board, currently at rank #99 with 2 new stars today.

GitHub Repository Details

Repository catchorg/Catch2 · default branch devel · size 33764 KB · watchers 459 · source: GitHub REST API and repository README

README

Catch2 logo

Github Releases Linux build status Linux build status MacOS build status Build Status Code Coverage Try online Join the chat in Discord: https://discord.gg/4CWS9zD

What is Catch2?

Catch2 is mainly a unit testing framework for C++, but it also provides basic micro-benchmarking features, and simple BDD macros.

Catch2's main advantage is that using it is both simple and natural. Test names do not have to be valid identifiers, assertions look like normal C++ boolean expressions, and sections provide a nice and local way to share set-up and tear-down code in tests.

Example unit test

#include

include

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

#include 

include

include

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); }; }

_Note that benchmarks are not run by default, so you need to run it explicitly with the [!benchmark] tag._

Catch2 v3 has been released!

You are on the devel branch, where the v3 version is being developed. v3 brings a bunch of significant changes, the big one being that Catch2 is no longer a single-header library. Catch2 now behaves as a normal library, with multiple headers and separately compiled implementation.

The documentation is slowly being updated to take these changes into account, but this work is currently still ongoing.

For migrating from the v2 releases to v3, you should look at our documentation. It provides a simple guidelines on getting started, and collects most common migration problems.

For the previous major version of Catch2 look into the v2.x branch here on GitHub.

How to use it

This documentation comprises these three parts:

More

or commercially.

GitHub Stars & Activity

21,518Stars
3,489Forks
448Open issues
C++Language

GitHub Popularity

GitHub stars21,518
Forks3,489
Open issues448
Primary languageC++
LicenseBSL-1.0
Stars gained today2
Created2010-11-08
Last pushed2026-10-08

Trending History

Daily boardrank #99 · ▲ 2 stars

Related GitHub Projects

1

tensorflow / tensorflow

C++★ 200,718⑂ 78,963▲ 24 stars
→
2

duckdb / duckdb

C++★ 42,079⑂ 3,901▲ 76 stars
→
3

google-ai-edge / mediapipe

C++★ 37,215⑂ 6,187▲ 12 stars
→
4

shadps4-emu / shadPS4

C++★ 33,379⑂ 2,684▲ 65 stars
→
5

telegramdesktop / tdesktop

C++★ 33,186⑂ 7,363▲ 21 stars
→
6

typesense / typesense

C++★ 26,847⑂ 1,010▲ 26 stars
→
7

boykopovar / AnyPS5

C++★ 26,685⑂ 2,234▲ 5,831 stars
→
8

k4yt3x / video2x

C++★ 22,138⑂ 1,922▲ 31 stars
→

More Trending Repositories