1
我想寫一個測試,將重定向的主要方法stdout
,但似乎一旦我調用主,它似乎開始在另一個線程,我無法捕獲輸出。下面是代碼:重定向stdout在另一個線程
這工作:
val baos = new ByteArrayOutputStream
val ps = new PrintStream(baos)
System.setOut(ps)
print("123")
Assert.assertEquals("123", baos.toString)
這不:
val baos = new ByteArrayOutputStream
val ps = new PrintStream(baos)
System.setOut(ps)
GameRunner.main(_)
Assert.assertEquals("123", baos.toString)
....
object GameRunner {
def main(args: Array[String]) {
print("123")
我如何能趕上在調用print
我的測試?
*我也嘗試scala.Console.setOut
編輯
我也注意到,運行GameRunner.main(_)
甚至沒有列出任何控制檯時,我不重定向。這是什麼造成的?
正如我所編輯,'Console.setOut'沒有工作,但是,'Console.withOut'工作 – 2013-05-05 02:59:02
右鍵,在第二個帳戶,也有一次,我使用main(null)而不是main(_)調用,然後運行,我猜我曾以爲這會採取類似行動,因爲我不使用參數...我將不得不進一步瞭解這一點:)非常感謝! – 2013-05-05 03:01:18