在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) ==========
此外,在选定的测试中断信息下没有任何链接“输出”,如下所示:(仅“测试通过...经过时间...”)
我该怎么做才能使这个ITestOutputHelper
工作?
请试试这个解决方案。它对我有用。(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
希望它有所帮助。如果有效,请告诉我。谢谢。
我在使用Nunit很长一段时间后第一次使用XUnit时遇到了这个问题。令人惊讶的是,XUnit不直接支持控制台输出,但确实提供了一些其他方法来实现相同的功能。
https://xunit.github.io/docs/capturing-output.html
如果你没有真正投资XUnit我会说最简单的事情就是使用Nunit或MsTest,因为它们都支持简单的console.writeline
仅对于ITestOutputHelper实现,以下工作原理:
正如@joe所报告的那样,你必须在单元测试项目的App.config中放置{add key =“xunit.diagnosticMessages”value =“true”}。
正如@stefano所报告的那样,您必须将类型为ITestOutputHelper的本地成员添加到测试类中。并且必须将其添加到构造函数的参数中,并将注入的对象分配给本地成员。
您应该在使用输出方法进行仪器后重建。
你必须有一个失败的测试。
您对输出方法的调用应该预测/失败测试。
这适用于PER TEST!不适用于测试套件。
只需使用Console.Write()
和Console.WriteLine()
。
Resharper挂钩到这个,你会看到测试结果中的输出。