Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 运行xunit测试时无法将输出打印到控制台窗口_C#_Xunit - Fatal编程技术网

C# 运行xunit测试时无法将输出打印到控制台窗口

C# 运行xunit测试时无法将输出打印到控制台窗口,c#,xunit,C#,Xunit,使用命令在命令提示符下运行测试时,尝试打印这些行 dotnet测试--无构建 尝试了Console.Writeline,之后我尝试了Output.Writeline。 即使从Visual Studio运行,我也无法在输出窗口中打印这些行。请注意,您可以使用ITestOutputHelper,它应该写入输出 请查看更多详细信息 public class test2InAnotherProject { private readonly ITestOutputHelper output;

使用命令在命令提示符下运行测试时,尝试打印这些行

dotnet测试--无构建

尝试了
Console.Writeline
,之后我尝试了
Output.Writeline

即使从Visual Studio运行,我也无法在输出窗口中打印这些行。

请注意,您可以使用ITestOutputHelper,它应该写入输出

请查看更多详细信息

public class test2InAnotherProject
{
    private readonly ITestOutputHelper output;

    public test2InAnotherProject(ITestOutputHelper output)
    {
        this.output = output;
    }
    int Diff(int a, int b)
    {
        return (a - b);
    }
    int Div(int a, int b)
    {
        return (b / a);
    }

    [Fact]
    public void Test2()
    {
        int a = 2, b = 4;

        output.WriteLine("Test1: Project 2 in old library");
        int c = Diff(a, b);
        Assert.Equal(c, (a - b));
        output.WriteLine("Test1: Asssert done Project 2 in old library");
    }

    [Fact]
    public void Test3()
    {
        int a = 2, b = 4;

        output.WriteLine("Test2: Project 2 in old library");
        int c = Div(a, b);
        Assert.Equal(c, (float)((b / a)));
        output.WriteLine("Test2: Assert done Project 2 in old library");
    }
}

实际上,
Console.WriteLine
没有输出。输出窗口中不显示
ITestOutputHelper
输出。相反,当您在测试资源管理器中单击测试时,会出现一个输出链接。单击该链接以查看输出

要在命令行上显示测试输出,请使用
dotnettest--logger“console;verbosity=detailed”


从powershell控制台(如package Manager控制台或powershell控制台ISE)中运行
dotnete测试
,您可以获得Xunit项目的所有
控制台.WriteLine
输出

在PowerShell ISE中运行以下脚本:

public class MyTestClass
{
    private readonly ITestOutputHelper output;

    public MyTestClass(ITestOutputHelper output)
    {
        this.output = output;
    }

    [Fact]
    public void MyTest()
    {
        var temp = "my class!";
        output.WriteLine("This is output from {0}", temp);
    }
}

此外,源代码中的任何
Console.WriteLine(..)
也会显示在PS控制台中。

根据我的代码。我已经在使用ITestOutputHelper,但它仍然不起作用。在我看来,这是最好和正确的答案。我正在使用xunit runner类,并制作另一个应用程序来运行通过的dll测试。Test2InOnotherProject的dll被传递给xunit runner实现,该实现在控制台窗口中运行dll。因此,当应用程序运行时,我希望输出到控制台窗口。为什么这样做?
cls
cd 'path/to/project/test/folder'
dotnet test