يعد 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. يجلب الإصدار 3 مجموعة من التغييرات المهمة، أهمها أن Catch2 لم تعد مكتبة ذات رأس واحد. يتصرف Catch2 الآن كمكتبة عادية، مع رؤوس متعددة وتنفيذ مجمع بشكل منفصل.
يتم تحديث الوثائق ببطء لأخذ هذه التغييرات في الاعتبار، ولكن هذا العمل لا يزال مستمرًا حاليًا.
للترحيل من إصدارات v2 إلى v3، يجب عليك الاطلاع على وثائقنا. فهو يوفر إرشادات بسيطة حول البدء، ويجمع مشكلات الترحيل الأكثر شيوعًا.
بالنسبة للإصدار الرئيسي السابق من Catch2، انظر إلى فرع v2.x
هنا على GitHub.
وتتكون هذه الوثائق من هذه الأجزاء الثلاثة: