XCTest في Swift: دليل شامل مع أمثلة عملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

XCTest في Swift: دليل شامل مع أمثلة عملية

1. ما هو XCTest ولماذا تحتاجه

XCTest هو إطار العمل الرسمي من Apple لاختبار الوحدات (Unit Testing) واختبار واجهة المستخدم (UI Testing) لتطبيقات iOS وmacOS. إنه مدمج مباشرة في Xcode ويُعد الأداة الأساسية للتحقق من صحة كود Swift وObjective-C. يوفر XCTest للمطورين مجموعة قوية ومرنة من واجهات برمجة التطبيقات (API) لكتابة وتنظيم وتنفيذ الاختبارات، بدءًا من الفحوصات البسيطة للدوال الفردية وصولاً إلى اختبارات التكامل المعقدة واختبارات واجهة المستخدم.

لماذا تحتاج XCTest؟ في تطوير البرمجيات الحديث، الاختبار ليس رفاهية بل ضرورة. يتيح لك XCTest أتمتة فحص الكود، وهو أمر بالغ الأهمية للحفاظ على جودة التطبيق على المدى الطويل. باستخدامه يمكنك:

  • اكتشاف الأخطاء التراجعية (Regressions): بعد إجراء تغييرات على الكود، يمكنك تشغيل الاختبارات بسرعة للتأكد من أن الوظائف الجديدة لم تعطل الوظائف الحالية.
  • توثيق الكود: الاختبارات الجيدة تُعتبر وثائق حية توضح كيفية عمل أجزاء النظام المختلفة.
  • تحسين بنية الكود: السعي لجعل الكود قابلاً للاختبار غالبًا ما يؤدي إلى بنية أنظف وأكثر نمطية ومرونة.
  • تسريع التطوير: بدلاً من تشغيل التطبيق يدويًا وتكرار نفس الإجراءات مرارًا، يمكنك تشغيل مجموعة الاختبارات بضغطة زر واحدة.

XCTest متكامل مع Xcode على جميع المستويات: من إنشاء أهداف الاختبار (test targets) إلى عرض النتائج في تقارير سهلة الاستخدام (Test Navigator). يدعم الإطار التنفيذ المتوازي للاختبارات، وقياس الأداء (performance testing)، والاختبار غير المتزامن، مما يجعله حلاً شاملاً للمشاريع مهما كان حجمها.

2. كيفية التثبيت

لا يتم تثبيت XCTest عبر مديري الحزم مثل pip أو npm. إنه جزء من نظام Apple البيئي ويأتي مع Xcode. لا تحتاج لأي أوامر إضافية لاستخدامه.

لبدء كتابة الاختبارات، اتبع الخطوات التالية في Xcode:

  1. افتح مشروعك.
  2. من القائمة، اختر File → New → Target.
  3. في النافذة التي تظهر، اختر تبويب Test ثم اختر Unit Testing Bundle (أو UI Testing Bundle لاختبارات واجهة المستخدم).
  4. اضغط Next، وحدد اسم الهدف (مثل "YourAppNameTests") ثم اضغط Finish.

سينشئ Xcode تلقائيًا ملفًا نموذجيًا يمكنك إضافة اختباراتك إليه. لا تحتاج لاستيراد XCTest في الكود لأنه مرتبط تلقائيًا بهدف الاختبار.

للمشاريع التي تستخدم Swift Package Manager (SPM)، XCTest متاح أيضًا دون خطوات إضافية. عند إنشاء حزمة باستخدام الأمر swift package init --type executable أو --type library، سينشئ SPM تلقائيًا مجلد الاختبارات Tests مع الملفات اللازمة.

3. البداية السريعة — مثال عملي بسيط

لنأخذ مثالاً بسيطًا. لنفترض أن لدينا هيكل Calculator نريد اختباره:

// الملف: Sources/Calculator.swift
struct Calculator {
    func add(_ a: Int, _ b: Int) -> Int {
        return a + b
    }
    
    func subtract(_ a: Int, _ b: Int) -> Int {
        return a - b
    }
}

الآن لننشئ ملف الاختبار (سينشئه Xcode تلقائيًا إذا اتبعت التعليمات أعلاه):

// الملف: Tests/MyProjectTests/CalculatorTests.swift
import XCTest
@testable import MyProject // استبدل MyProject باسم الوحدة الخاصة بك

final class CalculatorTests: XCTestCase {
    
    func testAddition() {
        // 1. الترتيب (Arrange)
        let calculator = Calculator()
        let result = calculator.add(2, 3)
        
        // 2. التنفيذ (Act) - تم بالفعل في السطر السابق
        
        // 3. التحقق (Assert)
        XCTAssertEqual(result, 5, "2 + 3 يجب أن يساوي 5")
    }
    
    func testSubtraction() {
        let calculator = Calculator()
        let result = calculator.subtract(10, 4)
        XCTAssertEqual(result, 6, "10 - 4 يجب أن يساوي 6")
    }
}

لتشغيل الاختبارات، اضغط على زر التشغيل (المثلث الأخضر) بجانب اسم الفئة أو اسم الدالة في Xcode، أو استخدم اختصار Cmd+U لتشغيل جميع الاختبارات في الهدف.

توصيات