package org.testng.util; | |
import org.testng.IRetryAnalyzer; | |
import org.testng.ITestResult; | |
import java.util.concurrent.atomic.AtomicInteger; | |
/** | |
* An implementation of IRetryAnalyzer that allows you to specify | |
* the maximum number of times you want your test to be retried. | |
* | |
* @author tocman@gmail.com (Jeremie Lenfant-Engelmann) | |
*/ | |
public abstract class RetryAnalyzerCount implements IRetryAnalyzer { | |
// Default retry once. | |
AtomicInteger count = new AtomicInteger(1); | |
/** | |
* Set the max number of time the method needs to be retried. | |
* @param count | |
*/ | |
protected void setCount(int count) { | |
this.count.set(count); | |
} | |
/** | |
* Retries the test if count is not 0. | |
* @param result The result of the test. | |
*/ | |
public boolean retry(ITestResult result) { | |
boolean retry = false; | |
if (count.intValue() > 0) { | |
retry = retryMethod(result); | |
count.decrementAndGet(); | |
} | |
return retry; | |
} | |
/** | |
* The method implemented by the class that test if the test | |
* must be retried or not. | |
* @param result The result of the test. | |
* @return true if the test must be retried, false otherwise. | |
*/ | |
public abstract boolean retryMethod(ITestResult result); | |
} |