2013-01-04 48 views
2

我通常使用ruby代碼,並使用rspec進行單元測試。Junit。有沒有辦法讓輸出格式化爲rspec輸出?

現在我必須在java中做一些工作,所以我使用JUnit。多個測試套件的輸出如下所示;

test: 
    [junit] Running com.whatever.MapperTest 
    [junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.542 sec 
    [junit] Running com.whatever.ReducerTest 
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.391 sec 
    [junit] Running com.whatever.DenormalizerTest 
    [junit] Tests run: 8, Failures: 0, Errors: 0, Time elapsed: 0.046 sec 
    [junit] Running com.whatever.EventTest 
    [junit] Tests run: 31, Failures: 0, Errors: 0, Time elapsed: 0.081 sec 

BUILD SUCCESSFUL 
Total time: 5 seconds 

這是相當密集的文本,並且使它有點難以看到故障和錯誤。

使用RSpec,我得到這樣的輸出;

............F........F........E....... 

其中'。'代表通過測試,'F'是失敗,'E'是錯誤。在這個輸出下面是所有失敗/錯誤的細節。

我發現這種格式更容易查看 - 故障和錯誤以某種方式跳躍出來,當從JUnit的正常彙總輸出中查看運行/失敗/錯誤的計數時,失敗和錯誤跳躍出來。

我已經通過build.xml文件的junit任務中的幾個選項,其中包括;

<formatter type="plain" usefile="false" /> 

<junit printsummary="true"> 

使用格式化= 「普通」 了太多的冗餘信息填滿屏幕。我不需要將每一個通行證列爲一行文本 - 只需要一個點是理想的。

有誰知道如果自定義格式化程序已被寫入,產生類似於我想要的格式?

無論我使用哪種工具都需要在命令行上工作,花哨的GUI工具不是一個選項。

回答

1

您可以編寫自己的格式化程序來解決問題。

這裏有一些很好的說明,讓你開始: ​​

基本上,你要改變addError保持與錯誤也測試紀錄。然後改變endTest()來輸出一個。而不是所有的信息,除非測試失敗或錯誤Set。

ANT的API包含在二進制發行版中。請記住用新創建的格式化程序更新junit格式程序類名。

+0

感謝您的支持。我正在與格式化程序取得一些進展,但我遇到了一些障礙。我只能鉤入單個測試套件的開始和結束(即包含一組測試的單個Java類)。所以,我正在吐出每套測試的一系列點。是否有任何方法可以在整個測試套件的開始和結束處獲得,因此我可以在所有套件中爲所有測試收集點並將它們輸出爲一個塊? – digitalronin

+1

是的,它看起來並不是一個簡單的解決方案。看起來它可能基於你正在使用的跑步者。您可以嘗試將測試分組到一個套件中,然後運行該套件(查看套件之後是否觸發endTest())。您可能可以使用RunListener。它有一個函數testRunFinished(),看起來它可以做你想做的事情。 – Joe

+0

謝謝,我會研究使用RunListener – digitalronin

相關問題