البدء مع CppUTest
البريد الإلكتروني
·
14/05/2017

النقاط الرئيسية
CppUTest هو إطار اختبار خفيف الوزن يتم صيانته بشكل نشط وفق نمط xUnit لاختبار C/C++، مع طبقة تكامل C تعمل بسلاسة حتى في أكواد C الثقيلة.
يمكنك تثبيته عبر مديري الحزم (توزيعات لينوكس، Homebrew) أو استنساخ مستودع GitHub.
يتكون الإعداد الأدنى من:
دليل الإنتاج
src/،دليل الاختبار
t/،قوم بتشغيل الاختبارات (
CommandLineTestRunner)، ووحدات الاختبار باستخدام كتل
TEST_GROUPوTEST().
يوفر CppUTest MakefileWorker.mk كمساعد يبسّط بناء الاختبارات، وربط المكتبات، ومعالجة العلامات.
كشف تسريبات الذاكرة مفعل بشكل افتراضي من خلال إعادة تعريف malloc/free، مما يلتقط التسريبات داخل الكود المصدر المختبر.
تغطية الكود عبر gcov تتكامل بسهولة من خلال تفعيل
CPPUTEST_USE_GCOV=Y، مما ينتج تقارير تغطية كاملة وملخصات HTML.الإطار يتضمن ميزات متقدمة: المحاكاة، الإضافات، نصوص المساعدة، والتعاون المباشر مع C - مفيد للأكواد المعقدة في المؤسسات.
أهم النقاط في الأسئلة والأجوبة
ما هو CppUTest ولماذا نستخدمه؟
إنه إطار اختبار قوي على طراز xUnit لـ C/C++ مع واجهة برمجة تطبيقات واضحة، وماكروهات تأكيد مدمجة، وكشف عن التسرب، وتطوير نشط - مثالي للأنظمة القديمة أو الحديثة.
كيف تُهيكل مشروعًا أساسيًا باستخدام CppUTest؟
كيف يمكنك تشغيل جميع الاختبارات؟
يستخدم عداء الاختبار:
كيف تبني اختبارات دون تكوين خيارات المترجم يدويًا؟
استخدم
MakefileWorker.mkمن CppUTest، الذي يتعامل مع الأعلام، والربط، وتنفيذ الاختبارات تلقائيًا.هل يمكن لـ CppUTest اكتشاف تسرب الذاكرة تلقائيًا؟
نعم. إنه يتجاوز malloc/free أثناء عمليات البناء الاختبارية، ويبلغ:
أي اختبار تسرب،
أين حدث،
حجم التسرب ومحتويات الذاكرة.
مثال على نتيجة الفشل:
كيف يمكنني توليد تغطية الشيفرة؟
تمكين:
CPPUTEST_USE_GCOV=Yتأكد من توفر
filterGcov.shفي$(CPPUTEST_HOME)/scripts/.شغّل: make
gcovهذا ينتج
.gcovونص ملخص وتقارير تغطية بتنسيق HTML.
ماذا يمكن أن تفعل CppUTest بخلاف الاختبارات الأساسية؟
إطار العمل التخيلي
نظام الملحقات
نصوص أتمتة المساعدة
تكامل C الأصلي
ماكروز التأكيد الواسعة
من هو الأنسب لـ CppUTest؟
الفرق التي تعمل مع الأنظمة المدمجة، ومنصات C، وخدمات C++، أو أي بيئة يجب التحقق من موثوقيتها وسلامة الذاكرة فيها بشكل مستمر.
في SparkPost، نولي الكثير من الوقت والجهد لاختبار رمزنا. منصتنا مكتوبة بلغة C، ومؤخراً بحثت في دمج مع إطار اختبار الوحدة الذي يسمى “CppUTest”، والذي يوفر اختباراً بأسلوب xUnit لـ C/C++. هذا الإطار قوي وغني بالميزات، ويخضع لتطوير نشط، مما يجعله خياراً ممتازاً. كما يوفر طبقة تكامل مع C، مما سهّل استخدامه مع رمز C الخاص بمنصتنا على الرغم من أن معظم الإطار مكتوب بلغة C++. تغطي هذه الدورة كيفية البدء باستخدام CppUTest في مشاريعك الخاصة.
هل ترغب في المزيد؟
هذه ليست سوى قمة الجبل الجليدي عندما يتعلق الأمر بكل الميزات الموجودة في هذه الأداة. بالإضافة إلى الأساسيات التي تم مناقشتها هنا، تحتوي الأداة أيضًا على إطار عمل لمحاكاة، وطبقة تكامل مباشرة مع C، وإطار عمل ملحقات، لنذكر بعضًا من الأسماء المهمة. يحتوي المستودع أيضًا على دليل كامل من البرامج النصية المساعدة التي يمكن أن تساعد في أتمتة بعض الأجزاء الروتينية للعمل مع الإطار.
آمل أن تساعد المعلومات هنا في تحسين جودة كود C/C++ الخاص بك باستخدام هذه الأداة الرائعة!
تنزيل CppUTest
صفحة مشروع CppUTest متاحة على الموقع الرسمي، والمستودع موجود على github. وهو أيضًا مدرج في مستودعات إدارة الحزم للعديد من توزيعات لينكس، وكذلك homebrew على نظام ماك. الأمثلة التي تلي تم تنفيذها على نظام ماك OS X، لكنها مستمدة من كود تم كتابته لنظام ريدهات، وهو نظام التشغيل الذي يعمل عليه منصتنا.
الأساسيات موثقة بشكل جيد على الصفحة الرئيسية لـ CppUTest. سنقوم بتجاوز ذلك وننتقل إلى بعض الميزات الأكثر إثارة للاهتمام.
وضع الأساس
أولاً وقبل كل شيء، دعنا نكتب بعض الأكواد!
سيحتوي مشروع الاختبار الخاص بنا على ملف



