我正在为以下方法编写测试代码:
public static void PrintAll<T>(this IEnumerable<T> collection)
{
foreach (T item in collection)
{
Console.Write(item.ToString());
}
}
基本上我认为需要做的是我可以使用随机数据填充数组,使用此方法输出,将其存储在流/集合中,然后使用标准foreach循环输出它并比较两者。
我知道Console.Write()
实际上并没有写入它写入应用程序标准输出的控制台。
我知道如何将其重定向到其他Process
个对象,但不知道如何重定向我自己的应用程序的标准输出,任何想法?
答案 0 :(得分:3)
您可以使用init(key:ascending:)
临时将控制台的输出设置为字符串。
例如:
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
// Save the standard output.
TextWriter tmp = Console.Out;
Console.SetOut(sw);
// Code which calls Console.Write
Console.SetOut(tmp);
string actual = sb.ToString();
请记住处置StringWriter
对象。