لماذا الاختبار ليس مجرد "علامة صح"، بل هو شريان النجاة الخاص بك
\n\nتخيل: لقد كتبت تطبيقًا رائعًا بلغة Swift، كل شيء يعمل، أصدقاؤك منبهرون. ولكن بعد أسبوع، تضيف ميزة جديدة - وفجأة! كل شيء ينهار. هل هذا مألوف؟ إذا لم يكن كذلك - فأنت إما عبقري، أو لم تواجه بعد التطوير الحقيقي. اختبار الكود ليس إلزامًا مملًا، بل هو أداة توفر ساعات من التوتر وتجعلك مطورًا واثقًا.
\n\nفي هذه المقالة، سنشرح من أين تبدأ اختبار Swift إذا كنت مبتدئًا. ستتعرف على ما هو XCTest، وكيفية كتابة اختبارات الوحدة واختبارات واجهة المستخدم، وستحصل على أمثلة جاهزة للكود. هيا بنا!
\n\nما هو الاختبار في Swift ولماذا هو ضروري
\n\nالاختبار هو عملية التحقق من أن الكود الخاص بك يفعل بالضبط ما تتوقعه منه. في عالم Swift، الإطار الرئيسي لذلك هو XCTest. إنه مدمج في Xcode ويسمح لك بكتابة اختبارات من أي مستوى: من التحقق من دالة واحدة إلى محاكاة نقرات المستخدم على الأزرار.
\n\nإليك ثلاثة أسباب رئيسية تجعلك تتقن اختبار Swift الآن:
\n- \n
- الثقة في الكود. تتوقف عن الخوف من تغيير أو إعادة هيكلة أي شيء - الاختبارات ستغطيك. \n
- توفير الوقت. من الأفضل قضاء 10 دقائق في اختبار بدلاً من ساعتين في البحث عن خطأ في الإنتاج. \n
- التوثيق. الاختبارات هي توثيق حي للكود الخاص بك. مطور جديد (أو أنت بعد شهر) سيفهم المنطق دون كلمات زائدة. \n
للمبتدئين، قد يبدو اختبار iOS معقدًا، لكن في الواقع الخطوة الأولى تستغرق 5 دقائق.
\n\nإعداد البيئة: أول اختبار في 5 دقائق
\n\nافتح Xcode وأنشئ مشروعًا جديدًا (File → New → Project → App). تأكد من أن علامة Include Tests نشطة. سيقوم Xcode تلقائيًا بإنشاء هدفين:
\n- \n
YourAppTests- لاختبارات الوحدة. \n YourAppUITests- لاختبارات واجهة المستخدم. \n
إذا كان المشروع موجودًا بالفعل، أضف هدف الاختبار يدويًا: File → New → Target → iOS Unit Testing Bundle.
\n\nالآن انقر على ملف YourAppTests.swift. سترى قالبًا لفئة موروثة من XCTestCase. احذف كل شيء واكتب أول اختبار لك:
import XCTest\n@testable import YourApp\n\nfinal class FirstTests: XCTestCase {\n\n func testExample() {\n let result = 2 + 2\n XCTAssertEqual(result, 4, "الرياضيات خذلتنا!")\n }\n}\n\n\nاضغط على المعين على يسار السطر func testExample واختر Test. إذا ظهرت علامة صح خضراء - فقد كتبت للتو أول اختبار وحدة لك بلغة Swift! تهانينا.
لاحظ @testable import YourApp. هذا سطر رئيسي: يفتح الوصول إلى الفئات الداخلية لتطبيقك حتى تتمكن الاختبارات من رؤيتها.
اختبارات الوحدة: التحقق من منطق التطبيق
\n\nاختبارات الوحدة هي الأساس. تتحقق من الدوال أو الطرق أو الفئات الفردية. دعنا نكتب اختبارًا لآلة حاسبة بسيطة.
\n\nإنشاء الكود للاختبار
\n\nأضف ملف Swift جديد إلى الهدف الرئيسي (وليس إلى الاختبارات!) بالفئة:
\n\nimport Foundation\n\nstruct Calculator {\n func add(_ a: Int, _ b: Int) -> Int {\n return a + b\n }\n \n func divide(_ a: Int, _ b: Int) throws -> Int {\n guard b != 0 else {\n throw CalculationError.divisionByZero\n }\n return a / b\n }\n}\n\nenum CalculationError: Error {\n case divisionByZero\n}\n\n\nكتابة الاختبارات
\n\nفي ملف الاختبار (أذكرك، هو في مجموعة YourAppTests) سنكتب:
import XCTest\n@testable import YourApp\n\nfinal class CalculatorTests: XCTestCase {\n\n var calculator: Calculator!\n\n override func setUpWithError() throws {\n calculator = Calculator()\n }\n\n override func tearDownWithError()