运行“dotnet test”时显示“dotnet vstest”输出接收器的输出

Geo*_*uer 7 .net vstest

编辑:下面是最初与标题一起发布的前一个问题

xunit 在控制台中运行时显示 ITestOutputHelper 输出

经过调查(见评论),这个问题仍然非常相关,需要一个答案,但似乎它应该针对vstest框架和围绕输出接收器而不是 xunit。

现在的具体问题是:当某些内容写入dotnet vstest输出接收器时,如何dotnet test在从命令行运行时显示它。具体来说,我希望能够设置一个观察者dotnet watch来持续运行测试,我更关心输出而不是结果(我将它用作测试系统,而更多地用作开发笔记本)。而且我不想局限于 Visual Studio 或 vscode。

原问题:

在我的测试课上,我有

    [Fact]
    public void Test() {

       output.WriteLine("WHATEVER");

    }
    readonly ITestOutputHelper output;

    public GroceryTests(ITestOutputHelper output) => this.output = output;
Run Code Online (Sandbox Code Playgroud)

当我通过 vscode 编辑器集成运行它时,我可以在“输出”窗格中看到输出。当我通过它运行它时,dotnet test我没有。如何通过控制台显示此输出?

小智 17

即使没有任何特定的日志接收器使用,@weichch 的答案也适用于我。该命令 dotnet test -l "console;verbosity=detailed" 向我展示了Console.WriteLine我的所有测试结果。而且不会太混乱。

请注意,您可以添加--filter="Name=<MethodName>"到命令中以运行具有此类名称的测试。

我的测试都有属性 [NonParallelizable]。
使用 dotnet 5

github的这个答案中也提到了该命令。


wei*_*hch 16

只是为了分享对我有用的东西(我不是 vstest sink 的专家,所以可能无法回答更深层次的问题):

我有一个像这样的简单测试:

public class UnitTest1
{
    private readonly ITestOutputHelper _output;

    public UnitTest1(ITestOutputHelper output)
    {
        _output = output;
    }

    [Fact]
    public void Test1()
    {
        _output.WriteLine("My message.");
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我在控制台中观看/运行此测试

dotnet watch test --logger:"console;verbosity=detailed"
Run Code Online (Sandbox Code Playgroud)

我看到输出如下:

  V XUnitTestProject1.UnitTest1.Test1 [5ms]
  Standard Output Messages:
 My message.
Run Code Online (Sandbox Code Playgroud)

我正在使用 .NET Core SDK 3.1.201。