Catch2 ist hauptsächlich ein Unit-Testing-Framework für C++, bietet aber auch grundlegende Mikro-Benchmarking-Funktionen und einfache BDD-Makros.
Der Hauptvorteil von Catch2 besteht darin, dass die Verwendung sowohl einfach als auch natürlich ist. Testnamen müssen keine gültigen Bezeichner sein, Behauptungen sehen aus wie normale boolesche C++-Ausdrücke und Abschnitte bieten eine nette und lokale Möglichkeit, Einrichtungs- und Abbaucode in Tests zu teilen.
Beispiel-Unit-Test
# 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 );
}
Beispiel eines Mikrobenchmarks
# 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 );
};
}
Beachten Sie, dass Benchmarks nicht standardmäßig ausgeführt werden. Sie müssen sie daher explizit mit dem Tag [!benchmark]
ausführen.
Sie befinden sich im devel
, in dem die v3-Version entwickelt wird. v3 bringt eine Reihe bedeutender Änderungen mit sich, die große besteht darin, dass Catch2 keine Single-Header-Bibliothek mehr ist. Catch2 verhält sich jetzt wie eine normale Bibliothek mit mehreren Headern und einer separat kompilierten Implementierung.
Die Dokumentation wird langsam aktualisiert, um diese Änderungen zu berücksichtigen, diese Arbeit ist jedoch derzeit noch im Gange.
Für die Migration von den V2-Releases auf V3 sollten Sie sich unsere Dokumentation ansehen. Es bietet einfache Richtlinien für den Einstieg und sammelt die häufigsten Migrationsprobleme.
Die vorherige Hauptversion von Catch2 finden Sie im v2.x
Zweig hier auf GitHub.
Diese Dokumentation besteht aus diesen drei Teilen: