4

我的自动化项目中有两个跑步者,如下所示:

  1. Main runner - 执行所有@ui-test标记的测试用例,如果场景失败target/rerun.txt,将使用场景位置(例如features/Dummy.feature:22)填充:

    @RunWith(Cucumber.class)
    @CucumberOptions(
        features = "classpath:features",
        plugin = {"pretty", "html:target/cucumber-html-report", "json:target/cucumber.json", "rerun:target/rerun.txt"},
        tags = {"@ui-test", "~@ignore"}
    )
    
    public class RunCukesTest {
    }
    
  2. Secondary runner - 从以下位置重新执行场景target/rerun.txt

    @RunWith(Cucumber.class)
    @CucumberOptions(
        features = "@target/rerun.txt",
        plugin = {"pretty", "html:target/cucumber-html-report-rerun", "json:target/cucumber_rerun.json"}
    )
    
    public class ReRunFailedCukesTest {
    }
    

执行执行时会创建两个结果 json 文件:

  • cucumber.json
  • cucumber_rerun.json

Jenkins 将通过Cucumber-JVM Reports插件收集结果并创建一个组合报告。

问题是,即使target/rerun.txt在第二次运行中所有测试都通过了,报告状态仍将保持失败,因为cucumber.json.

有没有办法(设置Cucumber-JVM Reports插件或修改上层提供的跑步者)cucumber.json用结果覆盖cucumber_rerun.json并仅发布修改后的结果cucumber.json

另一个子关键字:maven, java, cucumber-java8, cucumber-junit,junit

4

2 回答 2

1

不过,我遇到了与您类似的问题,我使用了单跑步者,直接处理了来自 testNG 的重新运行(重新运行是我从 JUnit 切换到 TestNG 的原因之一),结果我增加了数量在我的 json 报告中进行测试。我的解决方案是事后清理 json 文件,尽管 Jenkins 知道失败的测试,但它不会将构建标记为失败或不稳定。在您的特定情况下,您可能会尝试以某种方式匹配来自 rerun.json 的测试并将它们从常规 json 报告中排除。对于解析 json,我可能会推荐使用 Jackson FasterXML

于 2016-09-28T21:40:46.673 回答
1

Jenkins cucumber reporting在 Jenkins 中使用具有以下配置的最新版本。

Jenkins 中的配置图像

第一名

@RunWith(Cucumber.class)
@CucumberOptions(
		features="FolderFeature",
		glue={"Gluefolder"},
		plugin={"html:target/cucumberpf-html-report",
				"json:target/cucumberpf.json"}
		)

public class RunPF {

}

第二名

@RunWith(Cucumber.class)
@CucumberOptions(
		features="Blah/Test.feature",
		glue={"mygluefolder"},
		plugin={"html:target/cucumber-html-report",
				"json:target/cucumber.json"}
		)

public class RunRA {
	
}

我在这两个文件中都失败了,当它通过时,两者都在一份报告.json中正确合并和更新。cucumber

这是错误:

[CucumberReport] Preparing Cucumber Reports
[CucumberReport] JSON report directory is "C:\Users\ajacobs\workspace\com.mytest.framework\target\"
[CucumberReport] Copied 2 json files from workspace "C:\Users\admin\workspace\yourtest\target" to 
  reports directory "C:\Users\admin\.jenkins\jobs\Regression\builds\21\cucumber-html-reports\.cache"
[CucumberReport] Processing 2 json files:
[CucumberReport] C:\Users\admin\yourtest\builds\21\cucumber-html-reports\.cache\cucumber.json
[CucumberReport] C:\Users\admin\yourtest\builds\21\cucumber-html-reports\.cache\cucumberpf.json
Finished: SUCCESS
于 2017-06-20T14:48:12.207 回答