【发布时间】:2013-02-12 02:24:02
【问题描述】:
我将 xUnit 与 ReSharper 测试运行程序和 xUnitContrib resharper 插件一起使用。
当我有一个长时间运行的测试时,我希望能够将一些进度指示器输出到单元测试输出窗口。
我试过Debug.WriteLines、Trace.WriteLine 和Console.WriteLine。所有这些都具有相同的行为 - 在测试完成之前,输出窗口中不会显示任何内容。
例如:
[Fact]
public void Test()
{
Debug.WriteLine("A");
Trace.WriteLine("B");
Console.WriteLine("C");
Thread.Sleep(10000);
}
在 10 秒过去且测试完成之前,测试不会显示任何输出。如何一路获得输出?
更新 1
我也尝试过使用 MSTest 和 NUnit。 NUnit 是唯一一个一路显示输出的。
在测试完成之前,MSTest 和 XUnit 不会返回任何输出。奇怪的是,虽然 XUnit 和 NUnit 的测试输出看起来像这样:
A
B
C
MSTest 输出如下所示:
C
Debug Trace:
A
B
鉴于所有这些变化,我认为答案是由测试运行程序实现来决定如何以及何时输出。有谁知道是否可以配置 XUnit 测试运行器?
更新 2
我认为这一定是 xUnitContrib 的不足之处。发布到他们的CodePlex issue tracker。
【问题讨论】:
-
当我处于调试模式时,Debug.WriteLine() 对我来说工作得很好。因此,如果您想以一般方式登录,我建议您使用 brenton's answer
-
@derape - 不,它不适用于 xunit。在测试完成之前不会出现任何输出。
-
我明白了,我没有玩过 XUnit - 只有 NUnit。 NUnit 日志记录确实在调试线程中工作......
-
是的,NUnit 确实可以解决这个问题。查看我的更新。
标签: c# visual-studio unit-testing resharper xunit