执行方法时重定向标准输出和标准错误

时间:2017-06-05 16:32:20

标签: fantom

我有一个程序可以测试Test#子类中的每个方法,并以JUnit的XML格式输出XML。

例如:

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

我想执行testOne方法并捕获其中产生的标准输出和标准错误。此outerr输出将包含在XML报告中。

我的第一个想法是看sys::Env。环境类sys::Env包含errout,但只读取。

我的第二个想法是,sys::Process可以针对每种测试方法启动,并重定向sys::Process#.errsys::Process#.out,但我担心它会非常慢。< / p>

还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

您将无法重定向当前进程的输出(实际上不应该)。

如果输出绝对必须是stdout/err - 您需要进入处理路线。您将使用fork / jvm / stream设置命中,但与测试运行时相比,这可能是微不足道的。

更好的选择是使用Logging API进行日志记录 - 这样可以更好地控制记录内容以及发生的事情。