我正在重构使用NUnit 3.6的测试应用程序。大多数应用程序是由非开发人员编写的,需要进行重构/重组。有很多使用该标准的旧式帮助程序类

Console.Out.WriteLine();
Console.Error.WriteLine();
记录错误和测试进度的方法。做出了一些努力来使用NUnit
TestContext.Progress.WriteLine();
TestContext.Out.WriteLine();
TestContext.Error.WriteLine();
提供“实时输出”作为测试运行的方法,但这并不一致。展望 future ,我希望所有帮助程序类/方法都使用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 之间的区别,但它们实际上并不是描述性的,也没有示例说明为什么您在实践中会使用一个而不是另一个。

最佳答案

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

至少现在它说:



此处的关键字是“立即显示”-当某些内容发送到Error and Progress时,其目的是测试运行程序应立即显示它,而发送到Out的文本将在每个测试用例终止之前不可见。

这是因为NUnit 3将捕获Console.Out并在测试用例完成之前将其输出。在NUnit 2中,立即可以看到常规的Console.Out和Error。

关于c# - NUnit 3中的TestContext.Out和TestContext.Progress有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44118127/

10-17 00:46