代码之家  ›  专栏  ›  技术社区  ›  fostandy

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

  •  2
  • fostandy  · 技术社区  · 6 年前

    我在用

    • Visual Studio 2015(14.0.25431.01更新3)
    • Resharper Ultimate 2018.2.3(建造日期:2018-09-12)
    • Windows 10 x64 v1803
    • .NET框架4.5.2

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

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

    我试过的:

    单元测试

    1. 创建新的控制台项目(目标框架.NET框架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");
      }
      

    当我运行这个时,它只在测试完全完成时显示输出,10秒。我想展示的是第一个“asdf”基本上是即时的。

    我试过的那些随机的东西 this thread .

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

    enter image description here

    在那一点上它正在做 Thread.Sleep . 我希望看到 asdf

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

    enter image description here

    我知道在过去这是我想要的工作,但这可能是所有软件的旧版本(Visual Studio,Resharper,.NET Framework,NUnit)

    单元测试 一。创建新控制台项目 2。Nuget安装NUnit 3.11.0 三。创建单元测试:

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

    在这一个我没有任何输出。

    enter image description here

    我想这可能与前一篇文章中提到的bug有关,但不同的是他至少得到了一些东西。我正在体验他使用xUnit时的相关行为,但我使用NUnit,但我在使用xUnit时体验不同的行为,这对我来说有点莫名其妙。

    我的用例在这里并不复杂,因为我只做了一点,创建一个全新的项目,添加包,然后尝试使用它。有什么方法可以让我可靠地工作吗?

    0 回复  |  直到 6 年前