如何解决JUnit 5-如何通过执行JAR创建XML报告
我想开发一个以jar
形式提供的独立测试解决方案,该解决方案可以在CI / CD环境中使用,而无需一直进行重新编译。
因此,我从一个包含多个库,一个spring-boot-application和一个名为test-runner
的子模块的multi-maven模块中打包了一个胖子。
从gitlab ci / cd作品中执行fat-jar。但是我认为那只是前半部分。我想生成一个JUnit-XML-Report以输出测试结果。从我的研究中了解到,我将必须实现自己的记者。但是那里有一个更完整的例子吗?
测试运行器
public class Runner {
SummaryGeneratingListener listener = new SummaryGeneratingListener();
public void runOne() {
LauncherdiscoveryRequest request = LauncherdiscoveryRequestBuilder.request()
.selectors(selectClass(MyTest.class)).build();
Launcher launcher = LauncherFactory.create();
TestPlan testPlan = launcher.discover(request);
launcher.registerTestExecutionListeners(listener);
launcher.execute(testPlan);
}
public static void resultReport(Result result) {
System.out.println("Finished. Result: Failures: " + result.getFailureCount() + ". Ignored: "
+ result.getIgnoreCount() + ". Tests run: " + result.getruncount() + ". Time: "
+ result.getRunTime() + "ms.");
}
public static void main(String[] args) {
Runner runner = new Runner();
runner.runOne();
TestExecutionSummary summary = runner.listener.getSummary();
summary.printTo(new PrintWriter(System.out));
}
}
背景:
我的测试解决方案是通用的,并且使用配置文件来参数化测试。所有测试并行运行,而不是被测系统。因此,在此尝试之前,所有名为mvn test
的gitllab-jobs都要执行测试并生成报告。但是它会在每次运行时重新编译所有内容。我考虑过要加快速度。
解决方法
您可以使用控制台启动器生成 Junit5 xml 报告
java -jar junit-platform-console-standalone-1.6.2.jar @junitArgs.txt --reports-dir=reports
junitArgs.txt 文件包含以下信息:
-classpath fat jar path
--scan-classpath
,
要生成 XML 报告,您可以使用带有路径的 LegacyXmlReportGeneratingListener
将您的报告保存为第一个参数:
LegacyXmlReportGeneratingListener xmlListener = new LegacyXmlReportGeneratingListener(Paths.get("reports"),new PrintWriter(System.out));
在您的 runOne()
方法中,您需要相应地注册您的侦听器:
public void runOne() {
LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
.selectors(selectClass(MyTest.class)).build();
Launcher launcher = LauncherFactory.create();
TestPlan testPlan = launcher.discover(request);
launcher.registerTestExecutionListeners(listener);
launcher.registerTestExecutionListeners(xmlListener);
launcher.execute(testPlan);
}
这将在初始化期间传递给侦听器的文件夹中为每个测试根生成一个 XML 文件。 可以在 JavaDoc
中找到更多信息版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。