2017-06-05 18 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である必要がある場合は、プロセスルートに移動する必要があります。あなたはfork/jvm/stream設定ヒットを取るでしょうが、それはあなたのテストランタイムに比べて無視できるかもしれません。

より良いオプションは、ログに記録されるものとどこに行くのかをより詳細に制御する、Logging APIを使用してログすることです。

関連する問題