如何在Resharper单元测试会话查看器中获得输出以“流式传输”其输出,而不是在测试结束时将其转储?

fos*_*ndy 5 c# resharper nunit unit-testing xunit

我正在使用

  • Visual Studio 2015(14.0.25431.01更新3)
  • Resharper Ultimate 2018.2.3(内部版本2018-09-12)
  • Windows 10 x64 v1803
  • .NET Framework 4.5.2

我想要的是能够在resharper单元测试运行器中运行单元测试,并将输出STREAM输出到输出窗口。

(顺便说一下,这对我来说如此重要的部分原因是因为这个。所以,是的,这有点滥用单元测试,但是不幸的是,我仍然没有找到一个好的系统来代替它。)

我尝试过的

NUnit

  1. 创建新的控制台项目(目标框架.NET Framework 4.5.2)
  2. Nuget安装NUnit 3.11.0
  3. 创建一个单元测试:

    [Test]
    public void HelloWorld()
    {
        Debug.Listeners.Add(new DefaultTraceListener());
        Console.WriteLine("asdf");
        Debug.WriteLine("asdf");
        Thread.Sleep(10000);
        Console.WriteLine("asdf2");
        Debug.WriteLine("asdf2");
    }
    
    Run Code Online (Sandbox Code Playgroud)

当我运行此命令时,仅在测试完全完成(10秒钟)后才显示输出。我要的是基本上立即显示第一个“ asdf”。

我尝试过的随机事件来自此线程

据我所知,单元测试运行器甚至没有准备好在测试运行后就开始接受输出。中途看起来像这样:

在此处输入图片说明

那时它正在做Thread.Sleep。我希望看到asdf

一旦完成,它看起来像这样:

在此处输入图片说明

我知道过去曾经可以按照我的期望进行工作,但是可能是所有软件的旧版本(Visual Studio,Resharper,.NET Framework,NUnit)

xUnit 1.创建新的控制台项目2. Nuget安装NUnit 3.11.0 3.创建单元测试:

    [Fact]
    public void HelloWorld()
    {
        Debug.Listeners.Add(new DefaultTraceListener());
        Console.WriteLine("asdf");
        Debug.WriteLine("asdf");
        Thread.Sleep(10000);
        Console.WriteLine("asdf2");
        Debug.WriteLine("asdf2");
    }
Run Code Online (Sandbox Code Playgroud)

在这一本书中,我完全没有得到任何输出。

在此处输入图片说明

我想这可能与上一篇文章中提到的错误有关,但是不同之处在于他至少得到了一些东西。我在使用xUnit时遇到了与他有关的行为,但在使用NUnit时却遇到了这种情况,但是在使用xUnit时遇到了不同的行为。

我的用例在这里几乎不复杂,因为我所做的只是创建一个全新的项目,添加软件包然后尝试使用它。有什么办法可以使我可靠地工作吗?