یک آزمون ممکن است به هر دلیلی با شکست مواجه شود، و گاهی اوقات اجرای مجدد آزمون برای موفقیت مجدد آن کافی است (به دلیل پوسته پوسته شدن، مانند مشکلات زیرساخت اصلی). میتوانید 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 نمونه ای از پیاده سازی آن رابط است.