我创建单元测试是多年来在Visual Studio中试用代码的一种非常简单的方法。通过创建Visual C#/.NET Core/Unit Test Project (.NET Core)
项目,然后添加xunit
和xunit.runner.visualstudio
nuget包,我能够在VS 2017中使用相同类型的单元测试来使用.NET核1.1。
唯一的问题是我不再看到'输出'运行测试时链接以查看我写入控制台的内容。我可以使用Trace.WriteLine
包中的System.Diagnostics
来查看Visual Studio的Output
窗口中的输出,但是看到与每次测试运行相关联的输出更容易,也更有用。
有没有办法让我的设置显示或者我可以使用不同的设置?
修改
@ ilya的解决方案有效,但我必须重新编写所有测试,移除[TestClass]
并将[TestMethod]
替换为[Fact]
,我不能再对了 - 单击并运行单个测试方法,这样做似乎在类中运行所有测试方法...
答案 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
,则可能以前一直在编写输出 到Console
,Debug
或Trace
。当xUnit.net v2
发货时 默认情况下启用并行化,此输出捕获机制 不再适合;不可能知道其中的哪一个 可以并行运行的测试负责编写 那些共享资源。将代码从v1.x移植到的用户 v2.x应该使用两种新方法中的一种。