【发布时间】:2017-10-22 10:07:36
【问题描述】:
我正在重构一个使用 NUnit 3.6 的测试应用程序。大多数应用程序是由非开发人员编写的,需要重构/重组。有很多使用该标准的遗留辅助类
Console.Out.WriteLine();
Console.Error.WriteLine();
记录错误和测试进度的方法。为使用 NUnit 做出了一些努力
TestContext.Progress.WriteLine();
TestContext.Out.WriteLine();
TestContext.Error.WriteLine();
提供“实时输出”作为测试运行的方法,但并不一致。展望未来,我希望所有帮助类/方法都使用 Console.Out/Error 方法,以便可以在没有 NUnit 依赖项的情况下分离它们,然后在每个测试的 [SetUp] 方法中重定向输出。
[SetUp]
public void BaseTestSetupMethod(){
Console.SetError(TestContext.Error);
/* Set Console.Out to TestContext.Out or TestContext.Progress */
}
TestContext.Out 和 TestContext.Progress 有什么区别?
我应该将 Console.Out 重定向到哪一个以获得一般消息,例如打印当前正在运行的测试的名称及其正在执行的操作?
我通读了 NUnit 3 的文档,包括 https://github.com/nunit/docs/wiki/TestContext 页面。虽然它列出了 TestContext.Out 和 TestContext.Progress 之间的区别,但它们并不是真正的描述性,也没有示例说明您在实践中为什么会使用其中的一个。
【问题讨论】:
-
我以前读过这个文档。我不明白两者在实践中的区别。 “输出”和“立即显示的无错误输出”看起来几乎相同。
-
您是否查看过 TestResults.xml(或其他)文件中的内容?我的猜测是这是主要区别......
标签: c# unit-testing console nunit nunit-3.0