CppUnit

CppUnit هو إطار عمل لاختبار الوحدات البرمجية للغة البرمجة C++ . يتيح اختبار وحدات برمجيات C وC++ مع الحد الأدنى من تعديل الكود المصدري. بدأ تطويره حوالي عام 2000 على يد مايكل فيذرز كمنفذ C++ لـ JUnit لنظام ويندوز، ثم نُقل إلى نظام يونكس بواسطة جيروم لاكوست. [ 2 ] المكتبة مُرخصة بموجب رخصة جنو العمومية الصغرى . مع ذلك، وعلى عكس JUnit، لا يعتمد CppUnit على التعليقات التوضيحية (إذ لم تُضَف التعليقات التوضيحية إلى C++ إلا في الإصدار C++26 )، بل يُنشئ الاختبارات باستخدام وحدات ماكرو للمعالج المسبق .

يُجري هذا الإطار اختبارات ضمن مجموعات. تُرسل نتائج الاختبارات إلى مُرشِّح، أبسطها عبارة عن عدد مرات النجاح أو الفشل، أو مُرشِّحات أكثر تقدماً تسمح بإخراج XML متوافق مع أنظمة إعداد التقارير للتكامل المستمر . [ 3 ] تم نسخ المشروع عدة مرات. [ 4 ] [ 5 ] كانت نسخة freedesktop.org على GitHub ، التي يُشرف عليها ماركوس مورهارد من مشروع LibreOffice (الذي يستخدم CppUnit بكثافة)، تُدار بنشاط حتى عام 2020، وتُستخدم في توزيعات Linux مثل Debian و Ubuntu و Gentoo و Arch . [ 6 ] تُوفر بعض المكتبات، مثل مكتبات POCO C++ ، واجهات برمجة تطبيقات خاصة بها لاستخدام مكتبة CppUnit.

مثال

ضع في اعتبارك الفئة التالية Integer:

وحدة ؛تصدير الوحدة النمطية ويكيبيديا . أمثلة . عدد صحيح ؛تصدير مساحة الاسم ويكيبيديا :: أمثلة {class Integer { private : int x = 0 ; public : Integer ( int x ) : x { x } {}[[ nodiscard ]] int add ( int y ) noexcept { x += y ; return x ; }[[ nodiscard ]] int subtract ( int y ) noexcept { x -= y ; return x ; } }}

يمكن اختباره على النحو التالي:

وحدة ؛export module wikipedia . examples . tests . IntegerTest ;استيراد < cppunit / extensions / HelperMacros . h > ; استيراد wikipedia . examples . Integer ;باستخدام CppUnit :: TestFixture ؛ باستخدام wikipedia :: examples :: Integer ؛تصدير مساحة الاسم ويكيبيديا :: أمثلة :: اختبارات {class IntegerTest : public TestFixture { private : CPPUNIT_TEST_SUITE ( IntegerTest );CPPUNIT_TEST ( testAdd ); CPPUNIT_TEST ( testSubtract );CPPUNIT_TEST_SUITE_END ();Integer * i ; protected : void testAdd () { CPPUNIT_ASSERT_EQUAL ( 8 , i -> add ( 8 )); // 5 + 3 = 8 }void testSubtract () { CPPUNIT_ASSERT_EQUAL ( 3 , i- > subtract ( 2 )); // 5 - 2 = 3 } public : void setUp () override { i = new Integer ( 5 ); }void tearDown () override { delete i ; } }

ثم يمكن اختباره في main():

استيراد < cppunit / ui / text / TestRunner . ح > استيراد ويكيبيديا . أمثلة . الاختبارات . اختبار صحيح ;باستخدام CppUnit :: TextUi :: TestRunner ; استخدام ويكيبيديا :: أمثلة :: الاختبارات :: IntegerTest ;int main ( int argc , char * argv []) { TestRunner testRunner ; عداء . addTest ( IntegerTest :: suite ()); عداء . يجري ()؛ }

انظر أيضاً

للمزيد من القراءة

  • مادن، بليك (6 أبريل 2006). "1.7: استخدام CPPUnit لتنفيذ اختبار الوحدة". في ديكهايزر، مايك (محرر). جواهر برمجة الألعاب 6. تشارلز ريفر ميديا. ISBN 1-58450-450-1.

مراجع

  1. "وصف الالتزام" .
  2. مورهارد، ماركوس. "توثيق CppUnit" . freedesktop.org.
  3. إضافة Jenkins لـ CppUnit وأدوات اختبار الوحدات الأخرى
  4. نسخة معدلة من موقع freedesktop.org معروضة باسم CppUnit الإصدار 1.13
  5. تم تقديم النسخة المتفرعة باسم CppUnit2؛ لم يتم تعديلها منذ عام 2009
  6. مورهارد، ماركوس (22 أكتوبر 2013). "إطار عمل cppunit" . قائمة بريد LibreOffice . تم الاطلاع عليه في 20 مارس 2014 .