コンソール出力を依存関係にします。Console.WriteLine
出力をConsole.Out
プロパティにリダイレクトするので、必要なのはTextWriter
インスタンスだけです。
public Test(TextWriter outputWriter, int number)
{
this.outputWriter = outputWriter;
this.number = number;
}
public void PrintValue()
{
outputWriter.WriteLine("Number: " + number);
}
実際のアプリケーションでは、それを渡してConsole.Out
システムコンソールに印刷します。テストでは、単純に偽のライターを使用します(たとえばStringWriter
に基づいてStringBuilder
):
const int NumberToPrint = 5;
var content = new StringBuilder();
var writer = new StringWriter(content);
var sut = new Test(writer, NumberToPrint);
sut.PrintNumber();
var actualOutput = content.ToString();
Assert.AreEqual(actualOutput, "Number: 5");