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

时间:2017-05-17 01:17:01

标签: c# unit-testing .net-core visual-studio-2017 xunit

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

唯一的问题是我不再看到'输出'运行测试时链接以查看我写入控制台的内容。我可以使用Trace.WriteLine包中的System.Diagnostics来查看Visual Studio的Output窗口中的输出,但是看到与每次测试运行相关联的输出更容易,也更有用。

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

修改

@ ilya的解决方案有效,但我必须重新编写所有测试,移除[TestClass]并将[TestMethod]替换为[Fact],我不能再对了 - 单击并运行单个测试方法,这样做似乎在类中运行所有测试方法...

1 个答案:

答案 0 :(得分:5)

推荐使用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");
    }
}

检查文档:Capturing Output

  

如果您使用xUnit.net 1.x,则可能以前一直在编写输出   到ConsoleDebugTrace。当xUnit.net v2发货时   默认情况下启用并行化,此输出捕获机制   不再适合;不可能知道其中的哪一个   可以并行运行的测试负责编写   那些共享资源。将代码从v1.x移植到的用户   v2.x应该使用两种新方法中的一种。