.net core 用于NET CORE 2.0的Console.WriteLine不';我不能在Windows上的xUnit中工作
建议如何在.NET CORE 2.0 C#函数中写入控制台,这些函数链接到控制台应用程序或xUnit测试 我在simply Console.WriteLine上获得了一些成功,但只在linux上使用了.net core 用于NET CORE 2.0的Console.WriteLine不';我不能在Windows上的xUnit中工作,.net-core,xunit,.net Core,Xunit,建议如何在.NET CORE 2.0 C#函数中写入控制台,这些函数链接到控制台应用程序或xUnit测试 我在simply Console.WriteLine上获得了一些成功,但只在linux上使用了dotnet测试。在Windows上,“dotnet test”不生成任何控制台输出,除了有关通过的测试数和失败的测试数的统计信息 在谷歌上搜索这个问题,我发现了2015年的ITestOutputHelper线程,这些线程看起来过时了,或者引用了Visual Studio。我不使用VisualStu
dotnet测试。在Windows上,“dotnet test”不生成任何控制台输出,除了有关通过的测试数和失败的测试数的统计信息
在谷歌上搜索这个问题,我发现了2015年的ITestOutputHelper线程,这些线程看起来过时了,或者引用了Visual Studio。我不使用VisualStudio,因为我需要保持对Windows+Linux的可移植性。我主要使用VSCode编辑器,并在终端中运行大多数构建和测试命令
此外,ITestOutputHelper只是一个微不足道的接口:
它没有解决任何问题:当然,我可以重写所有的测试代码来调用_output.WriteLine而不是Console.WriteLine,但是我如何实例化ITestOutputHelper(官方文档在这个问题上仍然含糊不清:)
我查看了System.Diagnostics,将所有Console.WriteLine调用更改为Trace.TraceInformation。不幸的是,.NET CORE 2.0似乎没有实现System.Diagnostics,因为我的构建找不到System.Diagnostics.ConsoleTraceListener,我希望在测试早期调用Trace.Listeners.Add(myConsoleTraceListener)将其注册为侦听器
所以我不需要任何花哨的东西,单元测试不需要远程运行,也不需要并行运行,只要我能在控制台中看到输出,本地和顺序运行就可以了。我需要能够移植到Windows和Linux,这似乎是对XUnit要求过高的一部分。这是真的吗,有什么想法吗?您只需将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包 我知道这是一个较旧的线程,但我被困在同一个问题上。我尝试了ITestOutputHelper注入,但仍然没有在VS代码中向终端或输出窗口写入任何内容。这是我的(简单的,演示)代码。它可以很好地运行测试,但不会在任何地方输出字符串
using Xunit;
using Xunit.Abstractions;
using Demo;
using System;
namespace Demo.Tests
{
public class Demo_IsPrimeShould
{
private readonly ITestOutputHelper _output;
private readonly Demo _demo;
public Demo_IsPrimeShould(ITestOutputHelper output)
{
_demo = new Demo();
_output = output;
}
[Theory]
[InlineData(-1)]
[InlineData(0)]
[InlineData(1)]
public void IsPrime_Input_ReturnsFalse(int value)
{
_output.WriteLine("HELLO"); //why doesn't this work?
var result = _demo.IsPrime(value);
Assert.False(result, $"{value} should not be prime");
}
}
}
我的解决方法是使用Console.Error.WriteLine
而不是Console.WriteLine。xUnit.net有自己的dotnet xUnit
命令,