私はjavaでプログラミングコンテストのコードを書いています。プログラムへの入力はstdinで与えられ、出力はstdoutで出力されます。 stdin/stdoutで動作するプログラムをどうやってテストしていますか? System.inはInputStream型のものであり、のSystem.outはPrintStream型であるため、私はこのプロトタイプでFUNCに自分のコードを書いた stdinから読み込んでstdoutに書き込むjavaプログラムをテストしてください
:今void printAverage(InputStream in, PrintStream out)
、私はだろうこれは私が考えているものですjunitを使ってこれをテストするのが好きです。私はStringを使用してSystem.inを偽装し、Stringで出力を受け取っています。
@Test
void testPrintAverage() {
String input="10 20 30";
String expectedOutput="20";
InputStream in = getInputStreamFromString(input);
PrintStream out = getPrintStreamForString();
printAverage(in, out);
assertEquals(expectedOutput, out.toString());
}
getInputStreamFromString()とgetPrintStreamForString()を実装する正しい方法は何ですか?
これはもっと複雑にする必要がありますか?
おそらくhttp://stackoverflow.com/questions/782178/how-do-i-convert-a-string-to-an-inputstream-in-javaとhttp://stackoverflow.com/questions/216894/出力ストリームを取得することができます。 – tcovo
[JUnitテストとシミュレートされたユーザ入力]の複製が可能です。(http://stackoverflow.com/questions/6415728/junit-testing-with-simulated-user -input) –