我有一个函数,其规范要求它写入标准输出。当我测试时,stdout 是 MIA,我找不到它。我需要抓住它,这样我才能断言预期的响应。该方法将由命令管道调用。
另外,我会写一些管道函数:==stdin==>方法==stdout==>。这意味着我的单元测试需要将测试数据推送到标准输入。
我正在编写方法之前计划测试场景,但没有找到很多最新信息。我希望 MSTest 可能有一些帮助方法。如果没有,我可以使用一些关于如何编写自己的指南的指导。
我有一个函数,其规范要求它写入标准输出。当我测试时,stdout 是 MIA,我找不到它。我需要抓住它,这样我才能断言预期的响应。该方法将由命令管道调用。
另外,我会写一些管道函数:==stdin==>方法==stdout==>。这意味着我的单元测试需要将测试数据推送到标准输入。
我正在编写方法之前计划测试场景,但没有找到很多最新信息。我希望 MSTest 可能有一些帮助方法。如果没有,我可以使用一些关于如何编写自己的指南的指导。
我建议传入 aTextReader和 a TextWriter,也许作为可选参数。然后,您可以从读取器读取并写入写入器。然后调用者传入Console.Outand Console.In,或者你可以在方法中这样做:
public void Foo(TextReader reader = null, TextWriter writer = null)
{
reader = reader ?? Console.In;
writer = writer ?? Console.Out;
// Read and write
}
(或者使用一个无参数的重载来调用带有两个必需参数的重载。)
在您的单元测试中,使用 aStringReader和 a StringWriter。
如果您可以要求调用者传入读取器和写入器,它将允许您避免将代码紧密耦合到控制台,从而导致代码通常更干净——我可以想象一系列方法都接受读取器/ writer(或为它们使用字段),以便只有最顶层的代码“知道”它正在处理控制台。