【问题标题】:Redirect standard output and standard err when executing a method执行方法时重定向标准输出和标准错误
【发布时间】:2017-06-05 16:32:19
【问题描述】:

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

例如:

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

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

我的第一个想法是查看sys::Env。环境类sys::Enverrout,但是是只读的。

我的第二个想法是每个测试方法都可以启动sys::Process,并在里面重定向sys::Process#.errsys::Process#.out,但是我怕会很慢。

还有其他方法吗?

【问题讨论】:

  • 能够重定向 StdInStdOut 而不必替换 Env 确实很好。

标签: fantom


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-03-30
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    相关资源
    最近更新 更多