Bir test herhangi bir nedenle başarısız olabilir ve bazen testi tekrar çalıştırmak, testi tekrar geçirmek için yeterli olur (ör. temel altyapıdaki sorunlardan kaynaklanan güvenilirlik sorunları nedeniyle). Tradefed'i yeniden denemeyi otomatik olarak yapacak şekilde yapılandırabilirsiniz.
Otomatik yeniden denemenin temel amacı, testlerin tümünün yeniden çalıştırılmasını önlemektir. Yalnızca başarısız olan testleri yeniden çalıştırarak yürütme süresinde büyük tasarruf sağlar.
Tradefed, iterations özelliği aracılığıyla kararsızlığı tespit etmek için testlerin birden çok kez çalıştırılmasını da destekler. Bu durumda, tüm testler yeniden çalıştırılır ve yinelemelerden herhangi biri başarısız olursa test de başarısız olur.
Otomatik yeniden denemeyi etkinleştirme
Otomatik yeniden deneme, özelliği etkinleştirmek için iki seçenek sunan RetryDecision nesnesi aracılığıyla kontrol edilir: max-testcase-run-count
ve retry-strategy
.
max-testcase-run-count
, denenecek yeniden deneme veya yineleme sayısını belirler. Sonsuza kadar yeniden denemeyi önlemek için üst sınır belirler.
retry-strategy
, yeniden deneme şekline karar verilmesini sağlar. Daha fazla bilgi için aşağıdaki bölümleri inceleyin.
Otomatik yeniden denemeyi devre dışı bırakma
Aşağıdaki seçeneği kullanın:
--retry-strategy NO_RETRY
Başarısız olan işlemleri yeniden deneme
Test hatalarını yeniden denemek için aşağıdaki seçenekleri kullanın:
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
Bu işlem, hata geçilene veya maksimum yeniden deneme sayısına ulaşılana kadar (hangisi önce gerçekleşirse) yeniden denenir.
Yinelemeler
Testleri belirli bir süre boyunca yeniden çalıştırmak için aşağıdaki seçenekler kullanılabilir:
--retry-strategy ITERATIONS --max-testcase-run-count X
Sonuçlar nasıl görünür?
Sonuç bildirenler varsayılan olarak tüm denemelerin toplu sonuçlarını alır.
Örneğin: RETRY_ANY_FAILURE
için bir Fail
ve bir Pass
, yeniden deneme başarısızlığı gidermeyi başardığı için toplu bir Pass
ile sonuçlanır.
Bildirimde bulunan kullanıcılar, toplanmamış sonuçları alabilir. Bunun için, ayrıntılı (toplanmamış) sonuçlar için destek beyan eden ISupportGranularResults arayüzünü genişletmeleri gerekir.
Uygulama ayrıntıları
Test senaryosu düzeyinde hataları yeniden çalıştırmak için otomatik yeniden denemeyi etkinleştirmek üzere ITestFilterReceiver'ı uygulayın.
ITestFilterReceiver'ı uygulayamıyorsanız yeniden çalıştırmanın nasıl çalışacağını manuel olarak kontrol etmek için IAutoRetriableTest'i uygulayabilirsiniz. InstalledInstrumentationsTest, bu arayüzün örnek bir uygulamasıdır.