parallel-processing - 无法为并行运行的线程生成单独的 json 报告 - java + cucumber + testng
问题描述
尝试为两个线程中的每一个获取单独的 json cucumber 报告,但由于不是并行运行,因此只获得了一个包含两个线程的组合执行时间的报告。计划在不同设备上运行每个线程,并在获得每个单独设备的报告后。有没有办法为每个线程获取自己的 json 报告?
还尝试过:使用带有线程计数的 maven-surefire-plugin属性,但甚至无法运行并行线程。
我的pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>parallelTests.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
赛跑者
@CucumberOptions(
plugin = {"pretty",
"json:target/cucumber_report.json"},
features = "features/",
tags = "@test")
public class ParallelRun extends AbstractTestNGCucumberTests {
@Override
@DataProvider(parallel = true)
public Object[][] scenarios() {
return super.scenarios();
}
测试xml
<suite name="Suite" parallel="tests" thread-count="2">
<test name="Thread 2">
<classes>
<class name="ParallelRun">
</class>
</classes>
</test>
<test name="Thread 1">
<classes>
<class name="ParallelRun">
</class>
</classes>
</test>
我试图获得带有黄瓜场景、步骤的单独 json 报告,然后将它们与Multiple Cucumber HTML Reporter或其他内容结合起来,但只获得一个带有报告的 json 文件用于一个线程
解决方案
为了并行运行测试,您需要创建两个单独的运行器类,其中报告的名称应该不同,以避免覆盖 report.json
第 1 步:使用不同的 .json 文件名创建两个单独的 TestRunner 文件
跑步者1:
@CucumberOptions(
plugin = {"pretty",
"json:target/cucumber_report1.json"},
features = "features/",
tags = "@test")
public class ParallelRun extends AbstractTestNGCucumberTests {
@Override
@DataProvider(parallel = true)
public Object[][] scenarios() {
return super.scenarios();
}
亚军2:
@CucumberOptions(
plugin = {"pretty",
"json:target/cucumber_report2.json"},
features = "features/",
tags = "@test")
public class ParallelRun extends AbstractTestNGCucumberTests {
@Override
@DataProvider(parallel = true)
public Object[][] scenarios() {
return super.scenarios();
}
第2步:更新xml文件如下
测试xml:
<suite name="Suite" parallel="tests" thread-count="2">
<test name="Thread 2">
<classes>
<class name="runner1">
</class>
</classes>
</test>
<test name="Thread 1">
<classes>
<class name="runner2">
</class>
</classes>
</test>
推荐阅读
- javascript - 在 Node js 中创建计时器,每 10 分钟重置一次,并在点击 api 时返回当前分钟
- python - 如何从字符串中提取数字?
- firebase - 如何从通过 Firebase 上传到 Cloud Storage 的文件中删除 EXIF 数据
- eclipse - 组合两个数据集时,BIRT 查看器中的行跳过
- javascript - SyntaxError Unexpected token < in JSON at react.js API 导航中的位置 0
- react-native - 在应用程序安装后使用带有 react-native 的分支引用识别发件人
- bash - bash 中的 for 循环有问题吗?
- ssl - 移动应用程序中的公钥固定与证书固定
- javascript - 自动大写文本框光标自动跳转到结尾
- javascript - 在 React 中将 Blob 转换为 Cell 内的图像