我使用Cucumber for jUnit runner来运行这样的BDD测试:
@RunWith(Cucumber.class)
@CucumberOptions(
format = {"pretty", "json:target/cucumber.json"},
glue = {"com.company.bdd.steps"},
features = {"classpath:bdd-scenarios"},
tags = {"~@skip"}
)
public class CucumberTests {
}
我希望从https://github.com/damianszczepanik/cucumber-reporting
获得漂亮的HTML报告我制作了jUnit @AfterClass
方法:
@AfterClass
public static void buildReport() throws Exception {
List<String> srcReportJson = Collections.singletonList("target/cucumber.json");
Configuration configuration = new Configuration(new File("target"), "AEOS BDD Integration Tests");
new ReportBuilder(srcReportJson, configuration).generateReports();
}
问题是cucumber.json
方法执行时@AfterClass
为空。因此,我无法构建漂亮的HTML报告。
在黄瓜json报告已经构建完成之后,是否有任何可用于执行某些代码的钩子?
PS:使用了Cucumber v.1.1.8和Java 1.7,所以我无法尝试使用ExtendedCucumberRunner
答案 0 :(得分:2)
答案 1 :(得分:1)
您是否考虑过添加关机挂钩? Here is关于如何添加一个的示例。应该在JVM关闭之前执行的run()
方法中的代码。
答案 2 :(得分:1)
感谢您提出建议,但我决定使用现有的Maven plugin并在测试目标后立即执行目标。
答案 3 :(得分:0)
wjpowell在cucumber-jvm issues中发布了这个建议:
&#34;你不需要用黄瓜做这个。在用于运行黄瓜测试的JUnit测试中使用@beforeclass和@afterclass注释。这样做的好处是只运行路径或标签选项指定的功能。
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"html:target/cucumber-html-report", "json-pretty:target/cucumber-json-report.json"})
public class RunCukesTest {
@BeforeClass
public static void setup() {
System.out.println("Ran the before");
}
@AfterClass
public static void teardown() {
System.out.println("Ran the after");
}
}
&#34;