在我使用testNg的测试中,每次测试失败时,我都会在db中存储失败时间。除了重新运行所有失败的情况之外,还有其他方法,但在其他条件下,例如:仅在失败年龄为1时重新运行。我应该能够决定在after方法中重新运行特定测试。
答案 0 :(得分:0)
是的,这可以在关于时尚的一轮中完成。
首先让您的类实现IHookable
接口。这将导致TestNG始终只运行run()
方法,通过该方法执行测试。因此,在这个run()
实现中,您基本上是从数据库中查询测试方法,以确定其失败时间是否需要重新运行,然后相应地导致测试失败。
然后,您可以将重试分析器与测试相关联,以便在出现故障时再次运行。
应该这样做。
这是一个示例,显示您已根据名称有条件地使测试方法失败。有条件的检查可以根据您的失败年龄来决定。
import org.testng.IHookCallBack;
import org.testng.IHookable;
import org.testng.ITestResult;
import org.testng.annotations.Test;
public class TestClassSample implements IHookable {
@Override
public void run(IHookCallBack callBack, ITestResult testResult) {
if ("testMethod1".equals(testResult.getMethod().getMethodName())) {
testResult.setStatus(ITestResult.FAILURE);
} else {
callBack.runTestMethod(testResult);
}
}
@Test
public void testMethod1() {
System.err.println("testMethod1()");
}
@Test
public void testMethod2() {
System.err.println("testMethod2()");
}
}
这是输出:
testMethod2()
===============================================
Default Suite
Total tests run: 2, Failures: 1, Skips: 0
===============================================