Вам нужно просто если тест упал - перезапустить его ?
Используйте IHookable
package doubl;
import org.testng.IHookCallBack;
import org.testng.IHookable;
import org.testng.ITestResult;
public class DoubleRun implements IHookable{
@Override
public void run(IHookCallBack callBack, ITestResult testResult) {
System.out.println("Starting " + testResult.getName());
callBack.runTestMethod(testResult);
if (testResult.getThrowable()!=null) {
callBack.runTestMethod(testResult);
}
}
}
Сам тестовый метод:
package doubl;
import org.testng.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
@Listeners(DoubleRun.class)
public class Tests {
@Test
@Parameters("url")
public void test1(String url) {
System.out.println("--------------------------------");
System.out.println("url = " + url);
Assert.assertEquals(3, 3);
}
}
И XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
<test name="Test">
<parameter name="url" value="127.0.0.1"/>
<classes>
<class name="doubl.Tests"/>
</classes>
</test>
</suite>
Если в самом test1 сделать ошибку, т.е.
Assert.assertEquals(1, 3);
То тест запуститься 2 раза