Testi otomatik olarak yeniden deneme

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.