2017-04-01 70 views
3

我的gradle项目使用junit 5,我试图让测试报告显示在我的构建服务器上。 XML报告基本上看起来很好 - 它包含了所有的测试类和方法,但缺少在测试方法中打印的stdout/stderr。只有一些包含测试元数据的CDATA。如何在junit 5 gradle测试报告中捕获stdout/stderr?

@Test 
void testToString() { 
    System.out.println("Hello world"); 
    ... 
} 

XML报告:

<testcase name="testToString()" classname="com.my.company.PairsTest" time="0.008"> 
<system-out><![CDATA[ 
unique-id: [engine:junit-jupiter]/[class:com.my.company.PairsTest]/[method:testToString()] 
display-name: testToString() 
]]></system-out> 
</testcase> 

有没有设置告诉gradle这个插件捕捉到标准输出/标准错误?我看了看周围http://junit.org/junit5/docs/current/user-guide/#running-tests-build,但找不到任何。

我使用的是org.junit.platform:junit-platform-gradle-plugin:1.0.0-M3org.junit.jupiter:junit-jupiter-{api,engine}:5.0.0-M3

+0

目前没有捕获到stdout/stderr的输出。你能切换到使用TestReporter吗? https://github.com/junit-team/junit5/blob/master/documentation/src/test/java/example/TestReporterDemo.java –

+0

大部分stdout/stderr都是由正在测试的代码生成的,所以它们不会能够使用TestReporter。 –

+0

(马上返回)@MarcPhilipp会有计划支持在junit中捕获stdout/stderr,还是应该在某处提交功能建议或PR? IMO输出对理解CI服务器上的测试故障非常有用,如果失败不能在本地重现。 –

回答

5

正如马克·菲利普所说,目前在JUnit 5中不支持捕获输出到STDERR或STDOUT的输出,无论是在平台还是在Jupiter中。

如果你想这样的功能,请点击这里养一个问题:https://github.com/junit-team/junit5/issues

更新(2017年11月1日)

FYI:作为概念证明,我移植了基于JUnit 4 OutputCapture从Spring Boot到JUnit Jupiter的规则如下:https://github.com/sbrannen/junit5-demo/blob/master/src/test/java/extensions/CaptureSystemOutput.java

+0

谢谢,我已经提出了https://github.com/junit-team/junit5/issues/780 –

+0

感谢提出这个问题。 –

+0

仅供参考:我更新了答案以指向Spring Boot'OutputCapture'规则的端口。 –