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

Cucumber-java 重新运行无法仅执行失败的测试

丁恩
2023-03-14

我已经建立了一个cucumberjava硒项目,我想在我的管道中添加重新运行阶段。使用运行器AllTestRunner中的@rerun插件.java我能够创建一个仅失败测试的重新运行.txt并使用maven-surefire-plugin,我创建了一个第二个运行器FailedRunner.java用于自动执行,仅失败的测试。

问题是FailedRunner.java不仅执行失败的测试,还执行AllTestRunner.java.中配置为功能文件的所有测试。知道为什么会这样吗?这是我的pom.xml

 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                    <includes>
                        <include>**/*Runner.java</include>
                    </includes>
                </configuration>
<!--                <configuration>-->
<!--                    <parallel>methods</parallel>-->
<!--                    <threadCount>3</threadCount>-->
<!--                    <testFailureIgnore>true</testFailureIgnore>-->
<!--                </configuration>-->
            </plugin>

和ExecuteRunner.java

@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources/com/bdd/jenkins",
        glue = {"com.bdd.helpers", "com.bdd.steps"},
        tags= "not @Fail", //not @ignore
        plugin = {"pretty", "html:target/cucumber", "json:target/cucumber.json", "rerun:target/rerun.txt"}
)
public class ExecuteRunner {
}

还有FailedRunner.java

@CucumberOptions(features = "@target/rerun.txt",
        glue = {"com.bdd.helpers", "com.bdd.steps"},
        plugin = {"pretty","html:target/cucumberRerun", "json:target/cucumberRerun.json"}
)
public class FailedRunner {
}

在日志中,我看到以下内容:

Running com.pollfish.bdd.runners.ExecuteRunner
20:21:39,519 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
20:21:39,519 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
2
....
@batch1 @Test1
Scenario: Create questionnaire adding targeting and send for approval # src/test/resources/com/bdd/jenkins/migrated/CreateSurvey.feature:22
20:21:41.179 [main] INFO  com.bdd.steps.Hooks - Every test start from home page.
2

Running com.pollfish.bdd.runners.FailedRunner
02:41:09.170 [main] INFO  o.s.t.c.s.DefaultTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener
...
@batch1 @Test1
Scenario: Create questionnaire adding targeting and send for approval # src/test/resources/com/bdd/jenkins/migrated/CreateSurvey.feature:22
02:41:09.283 [main] INFO  com.bdd.steps.Hooks - Every test start from home page.

并且rerun.txt包含

file:src/test/resources/com/bdd/jenkins/migrated/QuestionnaireADL.feature:6:44:54:84
file:src/test/resources/com/bdd/jenkins/migrated/Recurring.feature:12:43:60

共有1个答案

阙沛
2023-03-14

我找到了罪魁祸首。因为我通过maven构建工具运行它,使用以下命令:mvn clean test -Dcucumber.features=src/test/resources/features,所以在FailedRunner中看起来.java即使我们设置了特殊的重新运行功能文件,并且因为命令行参数覆盖了类定义的参数,也会再次执行所有测试。作为设计工作,我会说

 类似资料:
  • 我正在使用SeleniumWebDriver(2.53.0版)的Java实现对web应用程序运行一些自动化测试。测试使用Cucumber的Java实现(版本1.2.3)以行为驱动测试格式编写。我使用Maven(3.3.9版)导入我的所有依赖项,并构建和运行测试。使用cucumber标签将测试分为不同类别。例如,我可以使用以下命令从命令行运行一类标有@JohnnyBravo的测试: 在做了一些研究后

  • 我正在尝试执行第二轮仅运行失败的场景,以避免由于环境/网络/测试不稳定而出现错误警报。我想知道是否有办法只运行一个maven命令来执行以下操作:1。运行my runner在其配置2中包含的所有方案。制作cucumber。此运行3的json报告。创建失败场景的列表4。运行失败场景列表5。根据第二次运行中失败测试的结果,更改第一次运行中创建的报告的结果,以便在最后,只有在两次运行中失败的场景被标记为失

  • 我正在使用 jvm cucumber并行插件,并希望重新运行我失败的测试用例。需要在 文件中进行哪些更改。

  • 我有一个示例项目,其中使用了Maven、TestNg和Cucumber。我使用testrunner类运行测试。 我创建了一个包含两个方案的功能文件,但两个方案都失败了。我有两个具有不同功能文件的测试运行者类 - 1。特征文件指向所有功能,2。指向仅失败的方案。 当我尝试重新运行场景时,它只运行一个场景。 1- 请告知如何执行所有失败的方案。

  • 我用Cucumber/Selenide编写自动化测试,我想重新运行失败的场景。 这是我项目的一部分,只有两个小测试(一个失败)来演示行为:https://github.com/mtpx/cucumberRerun 我阅读了如何使用cucumber重新运行失败的场景?和https://medium.com/@belek.bagishbekov/how-to-rerun-failed-test-cas

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