当前位置: 首页 > 知识库问答 >
问题:

TestNG在失败时重新运行测试,而不是在类后运行类前类方法

贺经纶
2023-03-14

我从以下链接实现了re运行失败的TestNG测试类的逻辑:

不幸的是,它使用“test”注释运行该方法,而不运行BeforeClass(@BeforeClass)和AfterClass(@AfterClass)方法。我试图研究ITestAnnotations的setDependsOnMethods和getDependsOnMethods方法,但没有成功。

有人知道如何让侦听器类同时运行BeforeClass和AfterClass方法吗?

public class RetryListener implements IAnnotationTransformer {
    public void transform(ITestAnnotation annotation, Class testClass,
            Constructor testConstructor, Method testMethod) {
        IRetryAnalyzer retry = annotation.getRetryAnalyzer();
        if (retry == null) {
            annotation.setRetryAnalyzer(Retry.class);
        }
    }
}

//The test begins here....

@BeforeClass(alwaysRun = true)
@Parameters("Environment")
public void BeforeClass(String sEnv) throws Exception {
    WebDriver driver = new FirefoxDriver();
    driver.get("www.google.com");

}

@Test
public void TestMethod() {
    //Some test...
}

@AfterClass(alwaysRun = true)
public void AfterClass() {
    driver.quit();
}

共有1个答案

唐彬炳
2023-03-14

TestNG只调用失败的@test方法。您可以在这里看到实现https://github.com/cbeust/testng/blob/master/src/main/java/org/testng/internal/invoker.java#l1408

因此,不能再次在RetryListener中调用@beforeClass@afterClass

 类似资料:
  • 然后尝试重新运行: -mvn test-dsurefire.suitexmlfiles=target/surefire-reports/testng-faild.xml 在这个例子中,我有3个测试,在第二个运行中,我得到以下信息: null 最大的问题是它真的在执行所有的三个测试,而我只想重新执行失败的一个。

  • 共设5个测试班。每一个都使用@Factory(dataprovider=“data”)初始化。我想实现的是,每个测试类中的测试方法应该与dataprovider实例并行运行。此外,测试类应该并行运行。 如下所示。TestClass1应该并行运行dataprovider实例。因此,测试类TestClass1的所有方法将为dataprovider实例并行运行。 data-provider-thread

  • 但得到以下错误: 如何使其工作? 谢谢您的帮助。 顺便说一句:我正在使用JRE1.8.0_65

  • 当我单独运行每个测试时,它们都通过了。但是当我同时运行几个测试时(使用maven或我的IDE,IntelliJ),不同测试类的方法是交错运行的,例如。第二个类的数据库初始化在第一个类启动后运行,但在第一个类的所有测试方法运行之前运行,因此这些方法将失败(因为数据库已经包含第二个类的数据)。 最简单的解决方案是强制TestNG运行器连续运行类(即,在运行另一个类的测试方法之前,等待一个测试类的所有测

  • 我正在为企业环境构建Selenium自动化套件的最后阶段工作。它配置了TestNG,在Jenkins上运行。该套件主要由UI测试组成。作为这种设置的典型,测试是不稳定的,在我们的时间范围内,重新处理测试以减少对UI自动化的依赖是不可行的。 鉴于我已经在进行代码优化,我想设置一些自动重新运行失败测试的东西,以最大限度地减少手动调查失败的需要。我已经调查了几个选项,但没有一个适合我们的设置: 一个理想

  • 我正在jenkins上运行一组测试,我得到以下结果: 好的东西告诉我行: maven-surefire-插件: 2.16是这里的问题,所以这里是我的pom文件检查: 我已经检查了maven仓库中的插件,我看到的唯一区别是插件标签中有插件,而在网站中它是在依赖标签中。 这里可能有什么错误? 谢谢 注:抱歉纯文本,但我不知道如何给代码上色=/