2017-04-01 89 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'規則的端口。 –

相關問題