We can implement retry logic in testNg using two ways
i. At Class level
ii. At Suite level(Recommended)
Class Level Implementation
> Create a class(Dynamic RetryAnalyzer) which implements IRetryAnalyzer
Define the max count how many times you need to run
public class dynamic RetryAnalyzer implements IRetryAnalyzer{
int count=1;
int maxRetryCount=3;
@OVerride
public boolean retry(ITestResult result){
if(result.getStatus()==ITestResult.FAILURE && count <=maxRetryCount)
count++;
return true;
}
return false;
}
}
> In the test which we are running define retryAnalyzer annotation
public class dummytest{
@Test(retryAnalyzer=DynamicRetryAnalyzer.class)
public void testOne{
system.out.println(" ")
Assert.assertTrue("false")
}}
Suite Level Implementation
> Create a class(Retry) which implements IAnnotationTransformer
public class Retry implement IAnnotationTransformer{
@OVerride
public void transform(ITestAnnotation annotation, Class areg1, Contstructor arg2, Method arg3){
IRetryAnalyzer retry=annotation.getRetryAnalyzer();
if(retry==null)
annotation.setRetryAnalyzer(CustomRetryListener.class)
> In Suite xml define Listeners and class(retry ) where it is defined
<suite name="suite" parallel="false>
<listeners>
<listener class=name="com.listener.Retry"></listener>
</listeners>
No comments:
Post a Comment