Xunit 捕获输出的信息

有时候有一些单元测试在CI/CD的时候运行的行为跟我们预期的不一样,而我们又不好调试它们。 这个时候最方面就是收集它的Log。 因为Xunit v2之后,并行测试是默认开启的。我们用Console, Debug 或 Trace 来收信这些信息就会比较乱。不太合适了

在 unit test中捕获输出

通过使用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 输出中,大多数测试运行器也会为您显示输出。

最近更新的
...