Sto scrivendo del codice per un concorso di programmazione in java. L'input per il programma è dato usando stdin e l'output è su stdout. Come state testando programmi che funzionano su stdin/stdout? Questo è quello che penso:Test dei programmi java che leggono dallo stdin e scrivono sullo stdout
Dal System.in è di tipo InputStream e System.out è di tipo PrintStream, ho scritto il mio codice in un func con questo prototipo:
void printAverage(InputStream in, PrintStream out)
Ora, vorrei piace testare questo utilizzando junit. Mi piacerebbe simulare System.in usando una stringa e ricevere l'output in una stringa.
@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());
}
Qual è il modo 'corretto' per implementare getInputStreamFromString() e getPrintStreamForString()?
Sto rendendo questo più complicato di quanto deve essere?
Forse http://stackoverflow.com/questions/782178/how-do-i-convert-a-string-to-an-inputstream-in-java e http://stackoverflow.com/questions/216894/ get-an-outputstream-in-a-string può aiutare ... – tcovo
possibile duplicato di [test JUnit con input utente simulato] (http://stackoverflow.com/questions/6415728/junit-testing-with-simulated-user -input) –