1

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

例如:

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

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

我的第一个想法是看sys::Env。环境类sys::Env具有err并且out是只读的。

我的第二个想法是sys::Process可以为每个测试方法启动并重定向sys::Process#.errsys::Process#.out在其中,但我担心它会很慢。

还有其他方法吗?

4

1 回答 1

1

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

如果输出绝对必须是stdout/err- 你需要走流程路线。您将受到 fork/jvm/stream 设置的影响,但与您的测试运行时相比,这可能可以忽略不计。

一个更好的选择是使用Logging API进行日志记录——这将更好地控制记录的内容以及事情的去向。

于 2017-06-06T13:45:49.447 回答