在TestNG/Selenium中自动重新启动失败的测试用例

在TestNG/Selenium中自动重新启动失败的测试用例,selenium,testng,restart,testcase,Selenium,Testng,Restart,Testcase,我使用Java中的SeleniumWebDriver和TestNG来运行X数量的测试用例 我想要的是,任何测试用例一旦失败就会自动重新启动(无论是从开始还是从失败点) 我知道TestNG框架有以下方法 @Override public void onTestFailure(ITestResult tr) { log("F"); } 但我不知道如何找出它是哪个测试用例,然后如何重新启动它。来自testng.org 每次套件中的测试失败时,TestNG都会在输出目录中创建一个名为T

我使用Java中的SeleniumWebDriver和TestNG来运行X数量的测试用例

我想要的是,任何测试用例一旦失败就会自动重新启动(无论是从开始还是从失败点)

我知道TestNG框架有以下方法

@Override
  public void onTestFailure(ITestResult tr) {
    log("F");
  }
但我不知道如何找出它是哪个测试用例,然后如何重新启动它。

来自testng.org

每次套件中的测试失败时,TestNG都会在输出目录中创建一个名为TestNG-failed.xml的文件。此XML文件包含仅重新运行这些失败的方法所需的信息,允许您快速复制失败,而无需运行整个测试。

如果您想在失败之后重新运行测试,则需要调用失败的方法。您可以从ITestResult对象获取该方法名称


如果希望同时重新运行所有失败的测试用例,那么可以在第一次执行后将testng-failed.xml作为输入xml

我想看一个包含实际代码的示例,在这里找到了它:

观察以下测试如何在故障发生后重新运行一次

import org.testng.Assert;
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import org.testng.annotations.Test;

public class Retry implements IRetryAnalyzer {
    private int retryCount = 0;
    private int maxRetryCount = 1;

    public boolean retry(ITestResult result) {

        if (retryCount < maxRetryCount) {
            retryCount++;
            return true;
        }
        return false;
    }

    @Test(retryAnalyzer = Retry.class)
    public void testGenX() {
        Assert.assertEquals("james", "JamesFail"); // ListenerTest fails
    }

    @Test(retryAnalyzer = Retry.class)
    public void testGenY() {
        Assert.assertEquals("hello", "World"); // ListenerTest fails

    }
}
import org.testng.Assert;
导入org.testng.IRetryAnalyzer;
导入org.testng.ITestResult;
导入org.testng.annotations.Test;
公共类重试实现IRetryAnalyzer{
private int retryCount=0;
private int maxRetryCount=1;
公共布尔重试(ITestResult结果){
if(retryCount
我希望像它们失败一样运行它们。好的,我有一个失败的测试和它的名字,我如何重新开始测试?没关系..我得到了..@WaqasKhan。。。请张贴解决方案,如果你有一个。我知道这仍然是一个老问题。。。