有时候有一些单元测试在CI/CD的时候运行的行为跟我们预期的不一样,而我们又不好调试它们。 这个时候最方面就是收集它的Log。 因为Xunit v2之后,并行测试是默认开启的。我们用Console, Debug 或 Trace 来收信这些信息就会比较乱。不太合适了
通过使用ITestOutputHelper
我们可以把信息扔到测试结果里
using Xunit;
using Xunit.Abstractions;
public class MyTestClass
{
private readonly ITestOutputHelper output;
public MyTestClass(ITestOutputHelper output)
{
this.output = output;
}
[Fact]
public void MyTest()
{
var temp = "my class!";
output.WriteLine("This is output from {0}", temp);
}
}
正如您在上面的示例中所看到的,ITestOutputHelper 上的 WriteLine 函数支持格式化参数,就像您习惯使用 Console 一样。
除了能够在单元测试期间写入输出系统之外,您还可以在构造函数时(IDisposable.Dispose 的方法里)写入它。 此测试输出将包含在 XML 输出中,大多数测试运行器也会为您显示输出。