C# xUnit没有';t将消息写入输出窗格
在VisualStudio2015社区中,我有一个示例ASP.NET5(vNext)项目和一个带有单元测试的项目(xUnit.NET)。DNX的版本是1.0.0-beta5。我的目标是在测试运行期间将消息添加到输出窗格。 我采取了一种方法来实现这一点,因此我的单元测试代码如下所示:C# xUnit没有';t将消息写入输出窗格,c#,visual-studio-2015,xunit.net,dnx,C#,Visual Studio 2015,Xunit.net,Dnx,在VisualStudio2015社区中,我有一个示例ASP.NET5(vNext)项目和一个带有单元测试的项目(xUnit.NET)。DNX的版本是1.0.0-beta5。我的目标是在测试运行期间将消息添加到输出窗格。 我采取了一种方法来实现这一点,因此我的单元测试代码如下所示: 使用Xunit; 使用Xunit.抽象; 命名空间单元测试 { 公共类UnitTest1 { ITestOutputHelper输出; 公共单元测试1(ITestOutputHelper输出) { 这个。输出=输出;
使用Xunit;
使用Xunit.抽象;
命名空间单元测试
{
公共类UnitTest1
{
ITestOutputHelper输出;
公共单元测试1(ITestOutputHelper输出)
{
这个。输出=输出;
}
[事实]
公共void test()
{
output.WriteLine(“测试消息”);
断言。相等(2,2);
}
}
}
Visual Studio测试资源管理器发现此测试(没关系),但我在“输出”窗格中(来自测试)的所有内容是:
此外,在所选测试运行信息下没有任何链接“输出”,如下所示:
(仅“测试通过…运行时间…”)
我应该怎么做才能使这个
ITestOutputHelper
工作?只需使用Console.Write()
和Console.WriteLine()
ReSharper钩住这个,您将在测试结果中看到输出。这个解决方案适合我(Visual Studio 2017和xUnit 2.2.0.3545) 尝试在
App.Config
文件中添加以下配置。(我不知道为什么。它只是需要的。如果它不存在,只需在测试项目中添加一个新的。)
输出信息将写入Test
output,如下所示
[xUnit.net 00:00:00.0853907]开始:xxxAssemblyName(并行测试集合=on,最大线程数=8)
[xUnit.net 00:00:00.1689373]Example.xxxTestClassName[PASS]
[xUnit.net 00:00:00.1697265]输出:
[xUnit.net 00:00:00.1700698]xxxx您的测试消息
[xUnit.net 00:00:00.1797303]完成:xxxAssemblyName
在使用NUnit很长一段时间后,我第一次使用xUnit时也遇到了这个问题
令人惊讶的是,xUnit不直接支持控制台输出,但提供了一些其他方法来实现同样的功能
如果你不是真的投资于xUnit,我会说最简单的方法就是使用NUnit,或者因为两者都支持简单的控制台
private readonlyITestOutputHelper输出
这对我很有用。仅对于ITestOutputHelper实现,以下工作:
同样,您必须将{add key=“xunit.diagnosticMessages”value=“true”}放在单元测试项目的App.config中
作为,您必须将ITestOutputHelper类型的本地成员添加到测试类中。您必须将其添加到构造函数的参数中,并将注入的对象分配给本地成员
您应该在使用输出方法检测后重新生成
你一定是考试不及格
对输出方法的调用应在/a失败测试之前进行
每次测试都有效!不适用于测试套件。我也遇到了同样的问题,还没有找到解决方案。@TimothyShields,但是,当测试失败时,似乎是这样。但如果它经过(比如在照片上…)就不会有趣了。。。你的意思是你确实得到了失败测试的输出?@TimothyShields是的,在同一个测试中,如果我写Assert.Equal(2,3),我会得到一个链接“output”。点击它会产生一个带有“标准输出”文本块的新选项卡。它不会为成功的测试保存输出,这实际上可能是由设计造成的。注意:基于XML的配置已经,如果可能的话,使用now.xunit.runner.json:{“$schema”:https://xunit.github.io/schema/current/xunit.runner.schema.json“,“appDomain”:“如果可用”,“diagnosticMessages”:true,“internalDiagnosticMessages”:false,“longRunningTestSeconds”:4,“maxParallelThreads”:8,“methodDisplay”:“classAndMethod”,“methodDisplayOptions”:“none”,“parallelizeAssembly”:true,“parallelizeTestCollections”:true,“PreEnumeratedTheories”:true,“shadowCopy”:true}
您的答案有效,谢谢!注意:我正在使用上面的xunit.runner.json
文件,设置“diagnosticMessages”“:true
请记住将文件xunit.runner.json设置为CopyAlways,这让我旋转了一段时间while@TGP1994-谢谢你提供的信息,是的,现在两个链接都断了。但我在这里找到了新的链接:和。希望有帮助。
------ 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) ==========