Catch2 pada dasarnya adalah kerangka pengujian unit untuk C++, tetapi juga menyediakan fitur pembandingan mikro dasar, dan makro BDD sederhana.
Keuntungan utama Catch2 adalah penggunaannya sederhana dan alami. Nama pengujian tidak harus berupa pengidentifikasi yang valid, pernyataan terlihat seperti ekspresi boolean C++ normal, dan bagian menyediakan cara yang bagus dan lokal untuk berbagi kode penyiapan dan pembongkaran dalam pengujian.
Contoh tes unit
# 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 );
}
Contoh mikrobenchmark
# 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 );
};
}
Perhatikan bahwa benchmark tidak dijalankan secara default, jadi Anda perlu menjalankannya secara eksplisit dengan tag [!benchmark]
.
Anda berada di cabang devel
, tempat versi v3 sedang dikembangkan. v3 membawa banyak perubahan signifikan, perubahan terbesarnya adalah Catch2 bukan lagi perpustakaan header tunggal. Catch2 sekarang berperilaku seperti perpustakaan normal, dengan banyak header dan implementasi yang dikompilasi secara terpisah.
Dokumentasi secara perlahan diperbarui untuk mempertimbangkan perubahan ini, namun pekerjaan ini masih berlangsung.
Untuk bermigrasi dari rilis v2 ke v3, Anda harus melihat dokumentasi kami. Panduan ini memberikan panduan sederhana untuk memulai, dan mengumpulkan masalah migrasi yang paling umum.
Untuk Catch2 versi utama sebelumnya, lihat cabang v2.x
di sini di GitHub.
Dokumentasi ini terdiri dari tiga bagian berikut: