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

问题描述 投票:22回答:5

在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工作?

c# visual-studio-2015 xunit.net dnx
5个回答
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 

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


3
投票

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

private readonly ITestOutputHelper输出;

这对我有用


2
投票

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

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

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


0
投票

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

正如@joe所报告的那样,你必须在单元测试项目的App.config中放置{add key =“xunit.diagnosticMessages”value =“true”}。

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

您应该在使用输出方法进行仪器后重建。

你必须有一个失败的测试。

您对输出方法的调用应该预测/失败测试。

这适用于PER TEST!不适用于测试套件。


-3
投票

只需使用Console.Write()Console.WriteLine()

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

© www.soinside.com 2019 - 2024. All rights reserved.