Which is correct combination of versions of cucumber-jvm parallel, maven surefire and compiler to be configured for running test cases in parallel

不羁岁月 提交于 2019-12-11 00:23:03

问题


I am new to cucumber-jvm parallel plugin and want to understand 2 things basically -

First - Which is correct combination of version i shall choose of cucumber-jvm parallel plugin, maven surefire and compiler plugin

Second - what is difference between cucumber-jvm implementation supporting parallel execution from V 4.0 and cucumber-jvm-parallel plugin

There are 2 phases people configure in cucumber-jvm-parallel plugin. Goal as validate or generateRunners. Can someone guide me whts the difference between these 2.

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

Is there any mandatory configuring missing in below jvm implementation

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

Please guide me as this is making me confused.


回答1:


Maven Surefire has two levels of parallel execution for JUnit tests. It can run individual classes in parallel and it can provide a scheduler to test runners that correctly implement the ParentRunner. Normally this is used to run methods in parallel by the BlockJUnit4ClassRunner.

Until version v4 Cucumber did not correctly implement ParentRunner so feature files could not be executed in parallel using the scheduler.

As explained in the cucumber-jvm-parallel-plugin/README the plugin will create an individual runner class for each feature. This means that parallel execution depends on Surefires ability to run classes in parallel rather then its ability to provide a scheduler.

If you are using Cucumber v4 you should not use the parallel plugin. For all but a few limited use cases there are no benefits to doing so and a whole slew of downsides.

The cucumber-jvm/junit/README.md describes how to configure surefire parallel execution (the latest stable version is surefire:2.22.1 and should work).

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



回答2:


So overall picture is, if we are using cucumber v 4.0.0 or above then we shall not use cucumber-jvm parallel plugin. Because one of the main principle of Cucumber 4.0.0 implementation is to provide support to parallel execution and coming to Maven Surefire version, we can use latest one as well i.e. 3.0.0-M3.



来源:https://stackoverflow.com/questions/54731928/which-is-correct-combination-of-versions-of-cucumber-jvm-parallel-maven-surefir

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!