Bir test herhangi bir nedenle başarısız olabilir ve bazen yalnızca testi yeniden çalıştırmak, testin tekrar başarılı olması için yeterlidir (temel altyapıdaki sorunlar gibi belirsizlik nedeniyle). Tradefed'i yeniden denemeyi otomatik olarak gerçekleştirecek şekilde yapılandırabilirsiniz.
Otomatik yeniden deneme özelliğinin temelinde, testlerin tümünün yeniden çalıştırılmasını önlemek vardır. Yalnızca başarısız testler yeniden çalıştırılır. Bu da yürütme süresinde büyük tasarruf sağlar.
Tradefed, iterasyonlar özelliği aracılığıyla tutarsı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 iterasyonlardan herhangi biri başarısız olursa test 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ı artırır. Sonsuza kadar yeniden denemeyi önlemek için üst sınır belirler.
retry-strategy
, yeniden deneme şekline karar verir. Daha fazla bilgi için aşağıdaki bölümlere bakın.
Otomatik yeniden denemeyi devre dışı bırakma
Aşağıdaki seçeneği kullanın:
--retry-strategy NO_RETRY
Başarısız yükleme işlemlerini 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 başarılı olana veya maksimum yeniden deneme sayısına ulaşılana kadar (hangisi önce gerçekleşirse) yeniden dener.
İterasyonlar
Testleri birkaç kez 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üyor?
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 hatayı gidermeyi başardığı için birleştirilmiş bir Pass
ile sonuçlanır.
Raporlama yapanların toplu olmayan sonuçları alması mümkündür. Bunun için ayrıntılı (toplu olmayan) sonuçlar için destek belirten ISupportGranularResults arayüzünü genişletmeleri gerekir.
Uygulama ayrıntıları
Testin başarısız olduğu durumlarda testin otomatik olarak yeniden denenmesi için 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.