这是配置为并行运行测试用例的cumber-jvm并行,maven surefire和编译器版本的正确组合

时间:2019-02-17 09:42:00

标签: cucumber-jvm

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

首先-这是正确的版本组合,我应该选择Cucumber-jvm并行插件,maven surefire和编译器插件

第二个-支持从V 4.0并行执行的cucumber-jvm实现和cumulage-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>

请指导我,因为这使我感到困惑。

2 个答案:

答案 0 :(得分:2)

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>

答案 1 :(得分:1)

因此,总体情况是,如果我们使用的是黄瓜v 4.0.0或更高版本,则我们将不使用黄瓜-jvm并行插件。因为Cucumber 4.0.0实现的主要原理之一是为并行执行提供支持,并且将其引入Maven Surefire版本,所以我们也可以使用最新的版本,即3.0.0-M3。