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

8
我正在使用Java的Selenium webdriver和TestNG运行一定数量的测试用例。
我希望任何测试用例在失败后可以自动重新启动(从头开始或从失败点开始)。
我知道TestNG框架有以下方法。
@Override
  public void onTestFailure(ITestResult tr) {
    log("F");
  }

但我不知道如何找出是哪个测试用例失败了,然后该如何重新启动它。

2个回答

12

我想看到一个包含实际代码示例的例子,结果在这里找到了: 使用TestNG立即重新启动测试

请注意下面的测试,每次失败时都会重新运行一次。

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

    }
}

5

来自testng.org

每当测试套件中的测试失败时,TestNG会在输出目录中创建一个名为testng-failed.xml的文件。此XML文件包含重新运行仅失败的方法所需的必要信息,使您能够快速重现失败,而无需运行所有测试。

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

如果您想一起重新运行所有失败的测试用例,则可以在第一次执行后将testng-failed.xml作为输入xml提供。


我想像它们失败一样运行它们。好的,我有失败的测试并命名了它,如何重新启动测试? - MostWanted
没事了,我懂了。干杯 - MostWanted
@WaqasKhan...如果您有解决方案,请发布。我知道这是一个旧问题,但仍然... - StrikerVillain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接