2017-06-05 75 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进行登录 - 这将更好地控制记录的内容以及事件发生的位置。

相关问题