كيفية إصلاح فشل اختبارات Apex وأخطاء تغطية الكود في عمليات نشر Salesforce
تتطلب عمليات النشر إلى الإنتاج اجتياز اختبارات Apex وتغطية كود لا تقل عن 75%، ويحظر Salesforce الإصدار حتى يتحقق الشرطان.
تظهر أثناء: النشر إلى الإنتاج أو تحديث كامل لبيئة sandboxالمعنى
يتطلب Salesforce أن تشغّل عمليات النشر إلى الإنتاج اختبارات Apex وأن تصل إلى تغطية كود متوسطها 75% على الأقل عبر جميع الـ classes والـ triggers، مع ضرورة وجود بعض التغطية لكل trigger. يفشل النشر، مع سرد assertion أو exception كل اختبار فاشل، عندما يطلق اختبار exception غير معالج، أو تفشل assertion، أو ينخفض متوسط التغطية في المؤسسة عن هذا الحد.
يقتصر هذا الشرط على عمليات النشر إلى الإنتاج وبيئات sandbox الكاملة باستخدام RunLocalTests أو RunAllTestsInOrg؛ أما عمليات النشر إلى Developer sandboxes أو scratch orgs باستخدام NoTestRun فتتخطى هذا الشرط تمامًا، وهذا بالضبط سبب عدم ملاحظة فجوات التغطية حتى يوم الإصدار.
الأسباب الشائعة
الحل
- أعِد إنتاج الفشل محليًا أولاًشغّل مجموعة الاختبارات المحلية الكاملة مع التغطية على بيئة sandbox الخاصة بك قبل لمس الكود، حتى تعمل على تصحيح الفشل الحقيقي لا سجل نشر قديم.
sf apex run test --test-level RunLocalTests --code-coverage --result-format human --wait 20 - اكتب اختبارات لأي كود جديد قبل النشرأضف test methods تمارس الـ classes والـ triggers الجديدة حتى يتجاوز متوسط تغطية المؤسسة 75% قبل الإصدار.
- اجعل الاختبارات مستقلة بذاتهاأعد كتابة الاختبارات لإنشاء بيانات اختبار خاصة بها باستخدام @TestSetup أو Test.startTest() بدلاً من الاعتماد على سجلات موجودة مصادفة في المؤسسة المستهدفة.
إزاي Serpent بتمنع ده
تعرض إضافة VS Code من Serpent نتائج الاختبار والتغطية على المهمة نفسها، بحيث تصبح فجوة التغطية أو فشل assertion مرئية قبل تقديم المهمة، بدلاً من اكتشافها أثناء عملية نشر إلى الإنتاج. راجع مكتبة أخطاء نشر Salesforce.
الوقاية
أخطاء ذات صلة
APEX TEST FAILURES، بالإجابات
ابدأ مجانًا. بدون بطاقة ائتمان، وبدون تثبيت، وبدون التزام.
يتم الإعداد في أقل من 15 دقيقة. دون الحاجة لتوظيف متخصص DevOps.
