提问者:小点点

哪个是cucumber-jvm并行、maven surefire和编译器版本的正确组合,以配置并行运行测试用例


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

首先-我将选择cucumber-jvm并行插件、maven surefire和编译器插件的正确组合

第二个-支持从V 4.0并行执行的cucumber-jvm实现和cucumber-jvm-并行插件有什么区别

人们在cucumber-jvm-并行插件中配置了两个阶段。目标是验证或生成运行器。有人能指导我这两个之间的区别吗?

             <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>

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


共2个答案

匿名用户

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

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

正如在cucumber-jvm-parel-plugin/README中所解释的,插件将为每个特性创建一个单独的运行器类。这意味着并行执行取决于Surefire并行运行类的能力,而不是它提供调度程序的能力。

如果您使用的是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 v 4.0.0或更高版本,那么我们将不会使用cucumber-jvm并行插件。因为Cucumber 4.0.0实现的主要原则之一是为并行执行提供支持,并来到Maven Surefire版本,我们也可以使用最新的,即3.0.0-M3。