我正在重构一个使用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,之间的区别,但它们并不是真正的描述性的,也没有在实践中使用其中一种而另一种的例子。
发布于 2019-07-22 09:48:07
答案确实出现在链接文档页面(https://github.com/nunit/docs/wiki/TestContext)上,但是自从提出这个问题以来已经有一段时间了,所以从那时起文档页面可能已经得到了改进。
至少现在它说:
输出 获取用于将输出发送到当前测试结果的TextWriter。 错误 获取用于发送用于立即显示的错误输出的TextWriter。 进展 获取用于发送用于立即显示的正常(无错误)输出的TextWriter。)
这里的关键字是“立即显示”--当某些内容被发送到错误和进度时,意图是测试运行程序应该立即显示它,而发送到Out的文本在每个测试用例结束之前都是不可见的。
这是因为NUnit 3将捕获Console.Out,在测试用例完成之前不会输出它。在NUnit 2中,常规的Console.Out和错误立即可见。
https://stackoverflow.com/questions/44118127
复制相似问题