Skip to main content
search

Test otomasyon projelerinde zaman zaman bazı testler ağ, bağlantı ya da zaman aşımı gibi anlık problemler dolayısıyla “başarısız” olarak işaretlenebiliyor. Test sonuçlarını inceleyerek gerçek hataları ve “false positive” sonuçları ayırt etmek ise zamanla başlı başına bir iş hâlini alabiliyor.

Birim testi altyapısı sağlayan TestNG bu soruna çok güzel bir çözüm sağlıyor ve bizi büyük bir dertten kurtarıyor.

Hayat kurtaran Interface’in ismi: IRetryAnalyzer. Bu Interface’i projenize dahil ettiğinizde 5-10 satır kod ekleyerek probleminizi çözebiliyorsunuz.

public class ReTryTestCase implements IRetryAnalyzer{

  private int count = 0;

  private static int maxTry = 3;

  @Override

  public boolean retry(ITestResult result) {      

     if (!result.isSuccess()) {

         if (count < maxTry) {

            count++;

           result.setStatus(ITestResult.FAILURE);

           return true;

         } else {

           result.setStatus(ITestResult.FAILURE);

         }

       }else{

result.setStatus(ITestResult.SUCCESS);

}

       return false;

}

Bu geliştirmeyi yaptıktan bir sonraki adım bu geliştirmenin testler ile ilişkilendirilmesi oluyor. Bunun için @Test annotation’ınıza bir parametre geçmeniz gerekiyor:


@Test(retryAnalyzer = RerunFailedTestCases.class)

public void testMethod() {

}

Bu değişiklikler sonrası eğer testiniz başarısız olursa test tekrar koşmaya başlayacaktır. Bu sayede ilk koşumda çıkan bazı hatalar bir sonraki koşumda pozitif olarak işaretleneceği için günün sonunda, daha az sayıda hatalı test ile başbaşa kalacaksınız.

Canberk Akduygu
Consultant – Keytorc

 

Close Menu