我从以下链接实现了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();
}
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仓库中的插件,我看到的唯一区别是插件标签中有插件,而在网站中它是在依赖标签中。 这里可能有什么错误? 谢谢 注:抱歉纯文本,但我不知道如何给代码上色=/