Ana içeriğe geç

Retry

TestFly, başarısız testleri otomatik olarak yeniden çalıştırır. IRetryAnalyzer bağlantısı gerekmez.


Global retry​

Tüm testler için testfly.yml içinde retry'ı etkinleştirin:

retry:
enabled: true
maxAttempts: 2 # total attempts (including the first run)

maxAttempts: 2 şu anlama gelir: bir kez çalıştır, başarısız olursa bir kez daha yeniden dene.


Metod bazında geçersiz kılma​

Belirli bir test için global ayarı geçersiz kılmak amacıyla @Retryable kullanın:

import io.testfly.listeners.Retryable;

@Test
@Retryable(maxAttempts = 3)
public void flakyTest() {
// retried up to 3 times regardless of global config
}

Global retry'ı devre dışı bırakma​

retry:
enabled: false

Devre dışı bırakıldığında, tek tek metodlardaki @Retryable de yok sayılır.


HTML raporunda​

Herhangi bir test yeniden denendiğinde Dashboard sekmesi bir Retry Özeti (Retry Summary) kartı gösterir:

MetrikAnlamı
Yeniden denenEn az bir kez başarısız olup yeniden denen testler
KurtarıldıRetry sonrasında nihayetinde geçen testler
Hâlâ başarısızTüm denemelerde başarısız olan testler

Yeniden denen testler, Test Cases tablosunda ↻ Nx rozetiyle işaretlenir.


Nasıl çalışır​

RetryAnnotationTransformer, Java SPI (META-INF/services/org.testng.ITestNGListener) aracılığıyla kaydedilir. testfly classpath'te olduğunda otomatik olarak bulunur — listener kaydı gerekmez.

Çalışma zamanında RetryListener, global yapılandırmayı ve @Retryable ek açıklamasını kontrol eder, ardından TestNG'e true (yeniden dene) veya false (durdur) döndürür.