public class SampleTest {
@Test
public void test() {
// 標準出力のデフォルトの出力先
PrintStream defaultPrintStream = System.out;
// 標準エラー出力のデフォルトの出力先
PrintStream defaultErrorPrintStream = System.err;
// 出力先を変更
ByteArrayOutputStream stdOut = new ByteArrayOutputStream();
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
System.setOut(new PrintStream(stdOut));
System.setErr(new PrintStream(errOut));
// 改行コードを取得
String lineSeparator = System.getProperty("line.separator");
// 標準出力の内容をテスト(1)
Sample.main(new String[]{"test1"});
assertEquals("引数はtest1です。" + lineSeparator, stdOut.toString());
// 出力内容をリセット
stdOut.reset();
// 標準出力の内容をテスト(2)
Sample.main(new String[]{"test2"});
assertEquals("引数はtest2です。" + lineSeparator, stdOut.toString());
// 標準エラー出力の内容をテスト
Sample.main(new String[]{});
assertEquals("引数を1つ指定してください。" + lineSeparator, errOut.toString());
// 出力先を戻す
System.setOut(defaultPrintStream);
System.setErr(defaultErrorPrintStream);
}
}