在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
工作?
答案 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)
答案 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挂钩到这个,你会在测试结果中看到输出。