.NET Core xUnit 出力のメモ

今日はちょっとしたメモ

.NET CoreでVisualStudio上のテストエクスプローラーから実行した場合、それまでのテストツールであれば、出力で、Traceなどの出力を確認することができました。
しかし、新しいxUnit v2.xでは標準でサポートされなくなりましたと。

https://xunit.github.io/docs/capturing-output.html
If you used xUnit.net 1.x, you may have previously been writing output to Console, Debug, or Trace. When xUnit.net v2 shipped with parallelization turned on by default, this output capture mechanism was no longer appropriate; it is impossible to know which of the many tests that could be running in parallel were responsible for writing to those shared resources. Users who are porting code from v1.x to v2.x should use one of the two new methods instead.

要するに、並列実行されるようになって、どこのテストの結果から出たTraceかわからなくなったと。これに責任持てるような手段がないとのこと。

代替として・・・

As you can see in the example above, the WriteLine function on ITestOutputHelper supports formatting arguments, just as you were used to with Console.

テストコードのあるクラスのコンストラクタに、ITestOutputHelperを引数として渡す。それにWriteLineメソッドを呼び出せば標準出力のように動いてくれると。といっても、Traceしたいので、なんとなく作りました。

https://github.com/darkcrash/bjd5/blob/CoreCLR/Bjd.Common.CoreCLR.Test/Logs/TestOutput.cs

使い方は、コンストラクタで、ITestOutputHelper を引数としてインスタンス化。DisposeでDisposeです。とはいえ、これはこれで、出力がただ出てくれるというだけで、根本的な解決ではないと認識しています。

これを作った経緯として、個別のテストでエラー箇所を特定するために出したかったというものです。なので、一括に動作してきれいな形で出てくれるが目的ではないのです。

こんな感じ