قد يفشل الاختبار لأي سبب من الأسباب ، وفي بعض الأحيان تكفي إعادة تشغيل الاختبار ببساطة لاجتيازه مرة أخرى (بسبب التقلبات ، مثل المشكلات في البنية التحتية الأساسية). يمكنك تكوين Tradefed لإجراء إعادة المحاولة تلقائيًا.
يتمثل جوهر إعادة المحاولة التلقائية في تجنب إعادة تشغيل كافة الاختبارات ؛ يقوم بإعادة تشغيل الاختبارات الفاشلة فقط ، مما يؤدي إلى توفير كبير في وقت التنفيذ.
تدعم Tradefed أيضًا إجراء الاختبارات عدة مرات لاكتشاف التقلبات عبر ميزة التكرارات . في هذه الحالة ، سيتم إعادة تشغيل جميع الاختبارات ، وسيفشل الاختبار في حالة فشل أي من التكرارات.
تمكين الميزة
يتم التحكم في إعادة المحاولة التلقائية عبر كائن RetryDecision الذي يوفر خيارين لتمكين الميزة: max-testcase-run-count
and 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
RETRY_ANY_FAILURE
Pass
Pass
مجمع لأن إعادة المحاولة تمكنت من مسح الفشل.
من الممكن للصحفيين الحصول على النتائج غير المجمعة. للقيام بذلك ، يحتاجون إلى توسيع واجهة ISupportGranularResults التي تعلن عن دعم النتائج الحبيبية (غير المجمعة).
تفاصيل التنفيذ
لتمكين إعادة المحاولة التلقائية لإعادة تشغيل حالات الفشل على مستوى حالة الاختبار ، قم بتنفيذ ITestFilterReceiver .
إذا لم تتمكن من تنفيذ ITestFilterReceiver ، فيمكنك تنفيذ IAutoRetriableTest للتحكم يدويًا في كيفية تشغيل إعادة التشغيل. InstalledInstrumentationsTest هو مثال على تنفيذ تلك الواجهة.