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