建议如何在 .NET CORE 2.0 C# 函数中写入控制台,这些函数链接到控制台应用程序或 xUnit 测试?
我对 Console.WriteLine 有一些运气,但仅限于dotnet test
在 linux 上。在 Windows 上,'dotnet test' 不产生任何控制台输出,除了有关通过和失败的测试数量的统计信息。
谷歌搜索这个问题,我运行了 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 的要求过高。这是真的吗,有什么想法吗?
小智 3
您只需将 ITestOutputHelper 作为注入放入构造函数中即可。测试框架会自动实例化一个并将其传入。您不需要实现该接口。
public MyTestClass
{
private readonly ITestOutputHelper _outputHelper;
public MyTestClass(ITestOutputHelper outputHelper)
{
_outputHelper = outputhelper;
}
[Fact]
public void MyTest()
{
_outputHelper.WriteLine("will go in test output");
}
}
Run Code Online (Sandbox Code Playgroud)
确保引用“xunit”nuget 包顶部的“xunit.runner.visualstudio”nuget 包。
归档时间: |
|
查看次数: |
1572 次 |
最近记录: |