cucumber-jvm - 为并行运行测试用例而配置的 cucumber-jvm parallel、maven Surefire 和编译器版本的正确组合是

标签 cucumber-jvm

我是 cucumber-jvm 并行插件的新手,基本上想了解两件事 -

首先 - 我应该选择 cucumber-jvm 并行插件、maven Surefire 和编译器插件的正确版本组合

第二 - 从 V 4.0 开始支持并行执行的 cucumber-jvm 实现与 cucumber-jvm-parallel 插件之间有什么区别

人们在 cucumber-jvm-parallel 插件中配置了两个阶段。目标为 validate 或generateRunners。有人可以指导我这两个之间有什么区别吗?

             <id>generateRunners</id>
                <phase>generate-test-sources</phase>
                <goals>
                    <goal>generateRunners</goal>
                </goals>

下面的jvm实现中是否缺少任何强制配置

    <plugin>
        <groupId>com.github.temyers</groupId>
        <artifactId>cucumber-jvm-parallel-plugin</artifactId>
        <version>2.2.0</version>
        <executions>
            <execution>
                <id>generateRunners</id>
                <phase>generate-test-sources</phase>
                <goals>
                    <goal>generateRunners</goal>
                </goals>
                <configuration>


<glue>com.jacksparrow.automation.steps_definitions.functional</glue>
                        <outputDirectory>${project.build.directory}/generated-test-sources</outputDirectory>
                        <featuresDirectory>src/test/resources/features/functional/</featuresDirectory>
                        <cucumberOutputDir>target/cucumber-parallel</cucumberOutputDir>
                        <format>json,html</format>
                        <tags>"~@ignored"</tags>
                    </configuration>
                </execution>
            </executions>
        </plugin>

请指导我,因为这让我很困惑。

最佳答案

Maven Surefire 对于 JUnit 测试有两个级别的并行执行。它可以并行运行各个类,并且可以提供一个调度程序来测试正确实现 ParentRunner 的运行程序。通常,这用于由 BlockJUnit4ClassRunner 并行运行方法。

直到版本 v4 Cucumber 都没有正确实现 ParentRunner,因此无法使用调度程序并行执行功能文件。

cucumber-jvm-parallel-plugin/README 中所述该插件将为每个功能创建一个单独的运行器类。这意味着并行执行取决于 Surefires 并行运行类的能力,而不是其提供调度程序的能力。

如果您使用的是 Cucumber v4,则不应使用并行插件。对于除了少数有限的用例之外的所有情况,这样做没有任何好处,而且还有很多缺点。

cucumber-jvm/junit/README.md描述如何配置 Surefire 并行执行(最新的稳定版本是 surefire:2.22.1 并且应该可以工作)。

<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <parallel>both</parallel>
                <threadCount>4</threadCount>
            </configuration>
        </plugin>
    </plugins>
</build>

关于cucumber-jvm - 为并行运行测试用例而配置的 cucumber-jvm parallel、maven Surefire 和编译器版本的正确组合是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54731928/

相关文章:

java - cucumber JVM 3 - io.cucumber.datatable.UndefinedDataTableTypeException

java - Cucumber-jvm:在执行任何功能之前设置环境

java - 从 Cucumber BDD 示例部分运行选择性测试

maven - 我如何在Groovy项目中使用 cucumber 定义缺少的步骤?

cucumber-jvm - net.masterthought.cucumber.ValidationException : No report file was added

angularjs - Cucumber-java 与 Cucumber.js

scala - 是否可以使用 Cucumber-jvm Scala 避免可变状态?

grails - 从 grails 插件执行 Cucumber Specs

java - 在 Java 环境中使用 org.openqa.selenium 测试 Electron 应用程序 (Intellij)

java - cucumber 步 Spring Bean