0Pricing
C++ Academy · درس

إعداد GTest

أضف إطار العمل وشغّله

إعداد GTest درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.

لماذا نستخدم إطارًا للاختبار؟

يُعد Google Test ‏(GTest) إطارًا شائع الاستخدام لاختبار الوحدات في C++. فهو يوفر تسجيل الاختبارات، والتوكيدات المتقدمة، وتركيبات الاختبار، وتقارير واضحة، حتى تتمكنوا من التحقق من الكود تلقائيًا.

الحصول على GTest

من الطرق الشائعة للحصول على GTest:

  • حزمة النظام، مثل libgtest-dev
  • استخدام FetchContent في CMake لجلبه من GitHub
  • وحدة فرعية مضمّنة في المشروع

يُعد FetchContent الخيار الأكثر قابلية للنقل في المشاريع الجديدة.

استخدام CMake مع FetchContent

ينزّل إعداد CMake المصغّر GoogleTest ويربطه بالمشروع.

# CMakeLists.txt
include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
)
FetchContent_MakeAvailable(googletest)

add_executable(my_tests test_main.cpp)
target_link_libraries(my_tests GTest::gtest_main)

اختباركم الأول

يُعلن عن الاختبار باستخدام الماكرو TEST الذي يتلقى اسم مجموعة الاختبار واسم الاختبار. وتستخدمون التوكيدات داخله.

#include <gtest/gtest.h>

int add(int a, int b) { return a + b; }

TEST(MathTest, AddsPositive) {
    EXPECT_EQ(add(2, 3), 5);
}

لا حاجة إلى main()

يوفر الربط مع GTest::gtest_main الدالة main() التي تشغّل جميع الاختبارات المسجلة. ولا تكتبون سوى حالات الاختبار.

كتابة main الخاصة بكم

إذا احتجتم إلى نقطة دخول مخصصة، فبادروا إلى تهيئة GTest بأنفسكم.

#include <gtest/gtest.h>

int main(int argc, char** argv) {
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

البناء والتشغيل

بعد إعداد CMake، نفّذوا البناء والتشغيل.

  • cmake -S . -B build
  • cmake --build build
  • ./build/my_tests

يطبع GTest ملخصًا ملوّنًا للنجاح والفشل.

قراءة المخرجات

يعرض كل اختبار أولًا [ RUN ] ثم [ OK ] أو [ FAILED ]. ويعرض السطر الأخير عدد الاختبارات التي نجحت. وتتضمن حالات الفشل الملف والسطر والقيمتين المتوقعة والفعلية.

تشغيل مجموعة فرعية

استخدموا الراية --gtest_filter لتشغيل الاختبارات المطابقة فقط، مثل ./my_tests --gtest_filter=MathTest.*. وهذا يسرّع تصحيح الأخطاء المركّز.

الدمج مع CTest

استدعوا enable_testing() وسجّلوا الملف التنفيذي باستخدام gtest_discover_tests حتى يتمكن ctest من تشغيل مجموعة الاختبارات في CI.

# CMakeLists.txt
enable_testing()
include(GoogleTest)
gtest_discover_tests(my_tests)

سير عمل سليم

اكتبوا اختبارًا يفشل، ثم نفّذوا الكود، وراقبوا نجاحه. حافظوا على سرعة الاختبارات واستقلاليتها حتى تتمكنوا من تشغيلها مع كل تغيير.

اختبار سريع

تذكّروا كيفية توفير main().

مراجعة

لقد أعددتم Google Test.

  • احصلوا عليه باستخدام FetchContent أو حزمة أو وحدة فرعية
  • يعلن TEST(Suite, Name) عن اختبار
  • اربطوا gtest_main للحصول على main() تلقائيًا
  • نفّذوا البناء والتشغيل والتصفية والدمج مع CTest

الأسئلة الشائعة

هل درس «إعداد GTest» مجاني؟

نعم — نص درس «إعداد GTest» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.

ماذا ستتعلم في «إعداد GTest»؟

أضف إطار العمل وشغّله تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟

لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «إعداد GTest»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟

نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إعداد GTest
  2. التأكيدات والمطابقات
  3. بيئات الاختبار والإعداد
  4. المحاكاة باستخدام GMock
← العودة إلى C++ Academy