2017-06-05 101 views
1

我有一個程序,測試Test#子類中的每個方法,並以JUnit的XML格式輸出XML。執行方法時重定向標準輸出和標準錯誤

例如:

class ExampleTest : Test 
{ 
    Void testOne() 
    { 
    ... 
    } 
} 

我想要執行的testOne方法並捕獲標準輸出和標準誤差在它產生的。這個outerr輸出將被包含在XML報告中。

我的第一個想法是看sys::Env。環境等級sys::Enverrout,但是隻讀。

我的第二個想法是,sys::Process可以爲每個測試方法啓動並重定向sys::Process#.errsys::Process#.out,但恐怕它會很慢。

還有其他方法可以做到嗎?

+1

能夠重定向'StdIn'和'StdOut'而不必更換'Env'確實很好。 –

回答

1

您將無法重定向當前進程的輸出(實際上不應該)。

如果輸出絕對必須是stdout/err - 您需要進入Process路徑。您將採用fork/jvm/stream設置命中,但與您的測試運行時相比,這可能可以忽略不計。

更好的選擇是使用Logging API進行登錄 - 這將更好地控制記錄的內容以及事件發生的位置。

相關問題