如何建议在.NET CORE 2.0 C#函数中写入控制台,将其链接到控制台应用程序或xUnit测试?
我只是运气简单的Console.WriteLine,但只有Linux上的node.js
。在Windows上,“dotnet test'除了关于传递的测试次数与失败次数的统计数据之外,不产生控制台输出。
在Google上搜索问题时,我使用了2015年的ITestOutputHelper线程,这些线程看起来已过时,或者引用了Visual Studio。我不使用Visual Studio,因为我需要保持Windows + Linux的可移植性。我主要使用VSCode编辑器,并在终端中运行大多数构建和测试命令。
ITestOutputHelper也只是一个简单的界面:
它没有解决任何问题:我确定我可以重写所有测试代码来调用_output.WriteLine而不是Console.WriteLine但是如何实例化ITestOutputHelper(官方文档在这个问题上仍然含糊不清: https://xunit.github.io/docs/capturing-output.html)
我查看了System.Diagnostics,将所有Console.WriteLine调用更改为Trace.TraceInformation。不幸的是,似乎.NET CORE 2.0没有实现System.Diagnostics,因为我的构建找不到System.Diagnostics.ConsoleTraceListener,我想通过早期调用Trace.Listeners.Add(myConsoleTraceListener)来注册为监听器。在测试中。
所以我不需要任何花哨的东西,单元测试不需要远程运行,也不需要并行运行本地和顺序运行就好了,只要我能在控制台中看到输出。而且我需要可以移植到Windows和Linux,看起来这部分是对XUnit的过多要求。这是真的,任何想法?
答案 0 :(得分:0)
您只需将ITestOutputHelper作为注入放在构造函数中。测试框架自动实例化一个并将其传入。您不需要实现该接口。
public MyTestClass
{
private readonly ITestOutputHelper _outputHelper;
public MyTestClass(ITestOutputHelper outputHelper)
{
_outputHelper = outputhelper;
}
[Fact]
public void MyTest()
{
_outputHelper.WriteLine("will go in test output");
}
}
请务必在上面引用“xunit.runner.visualstudio”nuget包 “xunit”nuget包。
答案 1 :(得分:0)
对我来说,解决方法是使用Console.Error.WriteLine
而不是Console.WriteLine。