哪个版本的 cucumber-jvm parallel、maven surefire 和编译器的正确组合是为 运行 个并行测试用例配置的
Which is correct combination of versions of cucumber-jvm parallel, maven surefire and compiler to be configured for running test cases in parallel
我是 cucumber-jvm 并行插件的新手,想基本上了解两件事 -
首先 - 我应该选择 cucumber-jvm 并行插件、maven surefire 和编译器插件的版本的正确组合
其次 - 支持从 V 4.0 并行执行的 cucumber-jvm 实现和 cucumber-jvm-parallel 插件有什么区别
人们在 cucumber-jvm-parallel 插件中配置了 2 个阶段。目标为验证或生成运行程序。有人可以指导我了解这两个之间的区别吗?
<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 测试并行执行。它可以 运行 个并行的 classes,它可以提供一个调度程序来测试 运行 正确实现 ParentRunner
的人。通常这用于 BlockJUnit4ClassRunner
.
并行的 运行 方法
直到版本 v4 Cucumber 没有正确实现 ParentRunner
因此无法使用调度程序并行执行功能文件。
如 cucumber-jvm-parallel-plugin/README 中所述,该插件将为每个功能创建一个单独的 运行ner class。这意味着并行执行取决于 Surefire 并行 运行 classes 的能力,而不是它提供调度程序的能力。
如果您使用的是 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。
我是 cucumber-jvm 并行插件的新手,想基本上了解两件事 -
首先 - 我应该选择 cucumber-jvm 并行插件、maven surefire 和编译器插件的版本的正确组合
其次 - 支持从 V 4.0 并行执行的 cucumber-jvm 实现和 cucumber-jvm-parallel 插件有什么区别
人们在 cucumber-jvm-parallel 插件中配置了 2 个阶段。目标为验证或生成运行程序。有人可以指导我了解这两个之间的区别吗?
<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 测试并行执行。它可以 运行 个并行的 classes,它可以提供一个调度程序来测试 运行 正确实现 ParentRunner
的人。通常这用于 BlockJUnit4ClassRunner
.
直到版本 v4 Cucumber 没有正确实现 ParentRunner
因此无法使用调度程序并行执行功能文件。
如 cucumber-jvm-parallel-plugin/README 中所述,该插件将为每个功能创建一个单独的 运行ner class。这意味着并行执行取决于 Surefire 并行 运行 classes 的能力,而不是它提供调度程序的能力。
如果您使用的是 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。