我是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>
请指导我,因为这使我感到困惑。
答案 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。