使用dotnet core 1.1和xunit单元测试显示输出?

Jas*_*aat 5 c# unit-testing xunit .net-core visual-studio-2017

多年来,我创建了单元测试,这是在Visual Studio中试用代码的一种非常简单的方法.通过创建Visual C#/.NET Core/Unit Test Project (.NET Core)项目,然后添加xunitxunit.runner.visualstudionuget包,我能够在VS 2017中使用相同类型的单元测试来使用.NET核1.1 .

唯一的问题是,在运行测试时我不再看到"输出"链接,以查看我写入控制台的内容.我可以Trace.WriteLineSystem.Diagnostics包中使用,并在OutputVisual Studio 的窗口中查看输出,但是看到与每个测试运行相关联的输出更容易,更有用.

有没有办法让我的设置显示或我可以使用不同的设置?

编辑

@伊利亚的解决方案工作,但我必须重新编写了所有的考试,去除[TestClass]和更换[TestMethod][Fact],我不能再右键单击并运行一个测试方法,这样做似乎运行类中的所有测试方法...

Ily*_*kov 6

推荐使用xUnit捕获输出的方法ITestOutputHelper:

public class BaseTestClass
{
    protected ITestOutputHelper Output { get; }

    public BaseTestClass(ITestOutputHelper output)
    {
        Output = output;
    }

    public void WriteLine(string str)
    {
        Output.WriteLine(str ?? Environment.NewLine);
    }
}

public class MyTestClass : BaseTestClass
{
    public MyTestClass(ITestOutputHelper output) : base(output) {}

    [Fact]
    public void MyTest()
    {
        WriteLine("foo");
    }
}
Run Code Online (Sandbox Code Playgroud)

检查文档:捕获输出.

如果你使用xUnit.net 1.x,你可能先前已经将输出写入Console,DebugTrace.当xUnit.net v2与并行默认开启发货,该输出捕获机制已不再适用 ; 不可能知道可以并行运行的许多测试中的哪一个负责写入这些共享资源.将代码从v1.x移植到v2.x的用户应该使用两种新方法中的一种.