2017-04-06 58 views
2

我在寫測試代碼爲下面的方法:標準輸出重定向到列表<string>或流

public static void PrintAll<T>(this IEnumerable<T> collection) 
{ 
    foreach (T item in collection) 
    { 
     Console.Write(item.ToString()); 
    } 
} 

所以基本上我認爲需要做的事情是,我可以填補與隨機數據的數組,輸出它使用這種方法,將其存儲在一個流/集合中,然後使用標準的foreach循環輸出它並比較兩者。

據我所知,Console.Write()實際上沒有寫入到它寫入我的應用程序的標準輸出的控制檯。

我知道如何將其重定向到其他Process對象,但不知道如何重定向我自己的應用程序的標準輸出,有什麼想法?

回答

3

您可以使用Console.SetOut將控制檯的輸出臨時設置爲字符串。

例如:

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對象。

+0

完成了!謝謝! –