قد يتعذّر إجراء اختبار لأي سبب، وفي بعض الأحيان، تكون إعادة تشغيل الاختبار كافية لاجتيازه مرة أخرى (بسبب عدم الاستقرار، مثل المشاكل في البنية الأساسية). يمكنك ضبط Tradefed لإجراء إعادة المحاولة تلقائيًا.
الهدف الأساسي من إعادة المحاولة تلقائيًا هو تجنُّب إعادة تنفيذ جميع الاختبارات، إذ تتم إعادة تنفيذ الاختبارات التي تعذّر إجراؤها فقط، ما يؤدي إلى توفير الكثير من الوقت.
تتيح Tradefed أيضًا إجراء الاختبارات عدة مرات لرصد عدم الاستقرار من خلال ميزة التكرارات. في هذه الحالة، سيتم إعادة تنفيذ جميع الاختبارات، وسيتعذّر الاختبار إذا تعذّرت أي من التكرارات.
تفعيل ميزة إعادة المحاولة التلقائية
يمكن التحكّم في إعادة المحاولة التلقائية من خلال
كائن RetryDecision
الذي يوفّر خيارَين لتفعيل الميزة: max-testcase-run-count
وretry-strategy.
يحدّد max-testcase-run-count عدد المحاولات أو التكرارات التي سيتم إجراؤها. يتم ضبط حدّ أقصى لتجنُّب إعادة المحاولة إلى الأبد.
تحدّد السمة retry-strategy طريقة إعادة المحاولة. يمكنك الاطّلاع على الأقسام التالية
للحصول على مزيد من التفاصيل.
إيقاف إعادة المحاولة تلقائيًا
استخدِم الخيار التالي:
--retry-strategy NO_RETRY
إعادة محاولة تنفيذ الإجراءات التي تعذّر إكمالها
لإعادة محاولة إجراء الاختبارات التي تعذّر إجراؤها، استخدِم الخيارات التالية:
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
سيتم إعادة محاولة تنفيذ العملية الفاشلة إلى أن تنجح أو إلى أن يتم بلوغ الحد الأقصى لعدد المحاولات، أيهما أقرب.
التكرارات
لإعادة إجراء الاختبارات لعدد من المرات، يمكن استخدام الخيارات التالية:
--retry-strategy ITERATIONS --max-testcase-run-count X
كيف تبدو النتائج؟
سيتلقّى مُبلِّغو النتائج تلقائيًا نتائج مجمّعة لجميع المحاولات.
على سبيل المثال: سيؤدي Fail وPass لـ RETRY_ANY_FAILURE إلى Pass مجمَّع لأنّ إعادة المحاولة نجحت في إزالة الخطأ.
من الممكن أن يتلقّى مقدّمو البلاغات النتائج غير المجمّعة. لإجراء ذلك، عليهم توسيع نطاق واجهة ISupportGranularResults التي تحدّد إمكانية عرض النتائج الدقيقة (غير المجمّعة).
تفاصيل التنفيذ
لتفعيل ميزة إعادة المحاولة التلقائية لإعادة تنفيذ حالات الاختبار التي تعذّر تنفيذها على مستوى حالة الاختبار، عليك تنفيذ واجهة ITestFilterReceiver.
إذا تعذّر عليك تنفيذ ITestFilterReceiver، يمكنك تنفيذ IAutoRetriableTest للتحكّم يدويًا في طريقة عمل إعادة التشغيل. InstalledInstrumentationsTest هو مثال على تنفيذ هذه الواجهة.