xunit不会将消息写入“输出”窗格

时间:2015-07-31 12:19:55

标签: c# visual-studio-2015 xunit.net dnx

在VS 2015社区中,我有一个示例ASP.NET 5(vNext)项目和一个带有单元测试的项目(xUnit.net)。 DNX的版本是1.0.0-beta5。我的目标是在测试运行期间将消息添加到输出窗格。 Here我采取了一种方法来执行此操作,因此我的单元测试代码如下所示:

using Xunit;
using Xunit.Abstractions;

namespace UnitTests
{

    public class UnitTest1
    {
        ITestOutputHelper output;

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

        [Fact]
        public void TestTestTest()
        {
            output.WriteLine("Test Message");
            Assert.Equal(2, 2);
        }

    }
}

Visual Studio Test Explorer发现了这个测试(没关系),但是我在“输出”窗格(来自“测试”)中的所有内容都是:

------ Run test started ------
------ Test started: Project: UnitTests ------
Starting  Microsoft.Framework.TestHost [C:\Users\*******\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta5\bin\dnx.exe --appbase "C:\Users\*******\Documents\Visual Studio 2015\Projects\MvcMovie\UnitTests" Microsoft.Framework.ApplicationHost --port 55837 Microsoft.Framework.TestHost --port 55893]
Connected to Microsoft.Framework.TestHost
Running tests in 'C:\Users\*******\Documents\Visual Studio 2015\Projects\MvcMovie\UnitTests\project.json'
========== Run test finished: 1 run (0:00:03,2267169) ==========

此外,在选定的测试中断信息下没有任何链接“输出”,如下所示: enter image description here  (只有“测试通过......经过时间......”)

我应该怎么做才能使ITestOutputHelper工作?

5 个答案:

答案 0 :(得分:6)

请尝试此解决方案。它对我有用。(VS2017 xunit 2.2.0.3545)。

尝试在App.Config文件中添加以下配置。 (我不知道为什么。它只是需要。如果没有退出,只需在测试项目中添加一个新的。)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="xunit.diagnosticMessages" value="true"/>
  </appSettings>
</configuration>

输出信息将按照预期编写在Test输出中,如下所示。

[xUnit.net 00:00:00.0853907]   Starting:    xxxAssemblyName (parallel test collections = on, max threads = 8)
[xUnit.net 00:00:00.1689373]     Example.xxxTestClassName [PASS]
[xUnit.net 00:00:00.1697265]       Output:
[xUnit.net 00:00:00.1700698]         xxxx your Test Message
[xUnit.net 00:00:00.1797303]   Finished:    xxxAssemblyName 

希望它有所帮助。如果有效,请告诉我。感谢。

答案 1 :(得分:3)

正如我在xunit github中所解释的那样

私人只读 ITestOutputHelper输出;

这对我有用

答案 2 :(得分:2)

我在使用Nunit很长一段时间后第一次使用XUnit时遇到了这个问题。 令人惊讶的是,XUnit不直接支持控制台输出,但确实提供了一些其他方法来实现相同的功能。

https://xunit.github.io/docs/capturing-output.html

如果您没有真正投资XUnit我会说最简单的事情就是使用Nunit或MsTest,因为它们都支持简单console.writeline

答案 3 :(得分:0)

仅对于ITestOutputHelper实现,以下工作:

如@joe所报告,您必须将{add key =“ xunit.diagnosticMessages” value =“ true”}放入单元测试项目的App.config中。

@stefano报告,必须将ITestOutputHelper类型的本地成员添加到测试类。并且必须将其添加到构造函数的参数中,并将注入的对象分配给本地成员。

您应该在使用输出方法检测后重建。

您的考试必须失败。

您对输出方法的调用应优先于失败的测试。

这在每次测试中都有效!不适用于测试套件。

答案 4 :(得分:-3)

只需使用$lengthOfString4 vs $lengthOfstring4 ^ ^ Console.Write()

Resharper挂钩到这个,你会在测试结果中看到输出。