ページ内ナビ
概要
Catch2はC++向けのテストframeworkです。TEST_CASEとREQUIREで単体テストを記述し、SECTIONによるsetup共有、BDD形式のmacro、簡易benchmarkも利用できます。CMakeではnamespaced targetを提供し、CTestへのtest自動登録にも対応します。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
通常のC++式に近いassertionでテストを書く
TEST_CASEでtest caseを定義し、REQUIREへboolean expressionを渡して検証します。失敗時には元の式と実際の値を表示でき、専用assertion APIへの変換を最小限にできます。
SECTIONとBDD macroでsetupを局所的に共有する
SECTIONは同じtest case内のsetupを共有しつつ各経路を独立して実行します。SCENARIO、GIVEN、WHEN、THEN等のBDD形式も同じ仕組み上で利用できます。
出典:[2]
CMake targetとCTestへの自動登録を利用する
CMakeではCatch2::Catch2とCatch2::Catch2WithMainを提供し、catch_discover_testsで実行file内のtest caseをCTestへ登録できます。
出典:[3]
向いている用途
導入前の確認
v3はsingle-header libraryではない
Catch2 v3は複数headerと別compileのimplementationを持つ通常のlibraryへ変更されています。v2向けのsingle-header導入手順をそのまま使わず、CMake integrationまたはv3用amalgamated distributionを利用します。
C++14以上とCMake構成を前提にする
repository descriptionはv3系をC++14以降向けとして案内し、v3.16.0のtop-level CMakeはCMake 3.16以上を要求します。古いC++11環境ではv2系との違いを確認します。
参考にした公式資料
- [1]Catch2 v3.16.0 README(2026-10-03)
- [2]Catch2 v3.16.0 tutorial(2026-10-03)
- [3]Catch2 v3.16.0 CMake integration(2026-10-03)
- [4]Catch2 v3.16.0 CMakeLists(2026-10-03)
- [5]Catch2 v3.16.0 release(2026-10-03)
- [6]catchorg/Catch2 repository(2026-10-03)
- [7]Catch2 Boost Software License 1.0(2026-10-03)
編集部からの補足
assertionが通常のC++式に近く、テスト導入時の記述量を抑えたいprojectに向きます。v3はsingle-header前提ではないため、古いv2の記事を流用せずCMake targetやamalgamated distributionなど現在の導入方法を選んでください。
3ステップで試す
- 1
Catch2 v3.16.0をCMakeのFetchContentへ固定する
CMakeLists.txtでrelease tagを固定し、
FetchContent_MakeAvailable(Catch2)後にtest targetをCatch2::Catch2WithMainへlinkします。FetchContent_Declare(Catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2.git GIT_TAG v3.16.0) - 2
最小のTEST_CASEを作成する
test.cppへ保存し、通常のC++式をREQUIREで検証する最小testを用意します。#include <catch2/catch_test_macros.hpp>\nTEST_CASE("addition") { REQUIRE(1 + 1 == 2); } - 3
buildしてCTestから実行する
include(CTest)、Catch2のextrasをCMAKE_MODULE_PATHへ追加したinclude(Catch)、catch_discover_tests(tests)を設定してから実行します。cmake -S . -B build && cmake --build build && ctest --test-dir build --output-on-failure
成長
成長の推移 · 直近30日
21,504 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 18
- Open PR
- 59
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
GitHubデータ
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Jest45,457 Stars
共通タグ 3件 · 共通カテゴリ 2件
assertion・mock・watch・snapshot・worker isolationを一つのCLIへまとめるJavaScript testing framework
TypeScript - Vitest17,180 Stars
共通タグ 2件 · 共通カテゴリ 2件
Viteのtransform/configを共有しNode・DOM・Browser Modeを一つのtest frameworkで扱う
TypeScript - JUnit7,056 Stars
共通タグ 2件 · 共通カテゴリ 2件
PlatformとJupiterでJava/JVMテストを実行する標準的なテスト基盤
Java - MockK5,762 Stars
共通タグ 2件 · 共通カテゴリ 2件
mock・stub・verifyをKotlin DSLで記述し、coroutineやAndroid testへ広げる
Kotlin - Kotest4,789 Stars
共通タグ 2件 · 共通カテゴリ 2件
spec style・assertion・property testingをKotlinのtest codeへまとめる
Kotlin - WebMock4,049 Stars
共通タグ 2件 · 共通カテゴリ 2件
RubyのHTTP requestを実networkへ送らずstubし、method・URI・header・bodyに対する期待値をtestで検証する
Ruby
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。