2017-04-06 15 views
2
私は、次のメソッドのテストコードを書いている

ストリームに:だから、基本的に私は実行する必要があるが、私は、ランダムなデータを持つ配列を埋めることができていると思うものをリダイレクト標準出力は<string>を一覧表示したり

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

、出力をこのメソッドを使用してストリーム/コレクションに格納し、標準のforeachループを使用して出力し、2つを比較します。

私は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

これで完了です!ありがとう! –

関連する問題