【问题标题】:What is the difference between TestContext.Out and TestContext.Progress in NUnit 3?NUnit 3 中的 TestContext.Out 和 TestContext.Progress 有什么区别?
【发布时间】: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.OutTestContext.Progress 之间的区别,但它们并不是真正的描述性,也没有示例说明您在实践中为什么会使用其中的一个。

【问题讨论】:

  • 我以前读过这个文档。我不明白两者在实践中的区别。 “输出”和“立即显示的无错误输出”看起来几乎相同。
  • 您是否查看过 TestResults.xml(或其他)文件中的内容?我的猜测是这是主要区别......

标签: c# unit-testing console nunit nunit-3.0


【解决方案1】:

答案确实在链接的文档页面 (https://github.com/nunit/docs/wiki/TestContext) 上,但是自从提出这个问题以来已经有一段时间了,所以也许从那时起文档页面已经得到了改进。

至少现在它说:

输出

获取用于将输出发送到当前测试结果的 TextWriter。

错误

获取一个 TextWriter 用于发送用于立即的错误输出 显示。

进展

获取用于发送用于立即显示的正常(非错误)输出的 TextWriter。)

这里的关键字是“立即显示”——当某些东西被发送到 Error 和 Progress 时,目的是测试运行器应该立即显示它,而发送到 Out 的文本在每个测试用例终止之前是不可见的。

这是因为 NUnit 3 将捕获 Console.Out 并且在测试用例完成之前不会输出它。在 NUnit 2 中,常规 Console.Out 和 Error 立即可见。

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 2013-10-12
    • 2012-02-05
    • 2011-06-22
    • 1970-01-01
    相关资源
    最近更新 更多