Catch2
v3.7.1
Catch2 は主に C++ 用の単体テスト フレームワークですが、基本的なマイクロベンチマーク機能や単純な BDD マクロも提供します。
Catch2 の主な利点は、使用がシンプルかつ自然であることです。テスト名は有効な識別子である必要はなく、アサーションは通常の 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 );
}
マイクロベンチマークの例
# 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 );
};
}
ベンチマークはデフォルトでは実行されないため、 [!benchmark]
タグを使用して明示的に実行する必要があることに注意してください。
あなたはdevel
ブランチにいて、v3 バージョンが開発されています。 v3 では多くの重要な変更が加えられています。最も大きな変更点は、Catch2 がシングルヘッダー ライブラリではなくなったことです。 Catch2 は、複数のヘッダーと個別にコンパイルされた実装を備えた通常のライブラリとして動作するようになりました。
これらの変更を考慮してドキュメントは徐々に更新されていますが、この作業は現在も進行中です。
v2 リリースから v3 に移行するには、ドキュメントを参照してください。開始するための簡単なガイドラインを提供し、最も一般的な移行の問題をまとめています。
Catch2 の以前のメジャー バージョンについては、GitHub のv2.x
ブランチを調べてください。
このドキュメントは次の 3 つの部分で構成されています。