cucumber-jvm - 哪个是 cucumber-jvm 并行版本、maven surefire 和编译器的正确组合,要配置为并行运行测试用例
问题描述
我是 cucumber-jvm 并行插件的新手,基本上想了解两件事 -
首先 - 我应该选择 cucumber-jvm 并行插件、maven surefire 和编译器插件的正确版本组合
第二 - 支持 V 4.0 并行执行的 cucumber-jvm 实现和 cucumber-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>
请指导我,因为这让我感到困惑。
解决方案
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>
推荐阅读
- python - 如何使用 Xarray 进行多个栅格?
- javascript - 在以下特殊情况下,当类型为移动设备的文本时,在 html 输入字段中为用户显示数字键盘
- postgresql - PostgreSql 在加入时不使用索引
- typescript - TypeScript 通用方法签名:添加内联约束,以便一个值既是 - 在对象键名中又是字符串
- c++ - 生成随机布尔向量的最佳方法是什么?
- django - React 构建文件在 Nginx 中给出 net::ERR_ABORTED 403 (Forbidden)
- php - 在 Laravel 6 中保存在 MySQL 中的验证和上传的图像名称不正确
- r - 如何根据R中数据集的列名在多个图中添加标题?
- postgresql - 在 docker 中运行时出现异常:org.postgresql.util.PSQLException:致命:用户“hamzabelmellouki”的密码验证失败
- liquibase - Liquibase 对 sql 中所有更改日志文件的先决条件