Мне нужно проверить основной метод, я хочу отправить материал в System.in, а затем посмотреть, что выходит из System.out.System.in, System.out из строк
Я делаю это так:
public class Check3_1 {
public static void main(String[] args) throws UnsupportedEncodingException {
InputStream originalIn = System.in;
PrintStream originalOut = System.out;
String input = "steve\n";
String expectedOutput = "Hello, steve";
InputStream stream = new ByteArrayInputStream(input.getBytes(StandardCharsets.UTF_8));
// BufferedInputStream bis = new
ByteArrayInputStream bais = new ByteArrayInputStream(new byte[100]);
ByteArrayOutputStream baos = new ByteArrayOutputStream(100);
PrintStream ps = new PrintStream(baos);
System.setIn(bais);
System.setOut(ps);
Homework_3.main(args);
String output = baos.toString(StandardCharsets.UTF_8.name());
System.setIn(originalIn);
System.setOut(originalOut);
System.out.println("actual output: "+output);
System.out.println("correct?: "+output.equals(expectedOutput));
}
}
Есть ли лучший способ сделать это? Есть ли какой-то трюк, который я могу использовать, поэтому я могу отправить материал для ввода после проверки промежуточного вывода? Вероятно, реализация входного потока я могу использовать для отправки новых строк все время? И, возможно, какой-то вывод, который я могу использовать для просмотра промежуточного вывода?
У меня есть основные методы, и я должен рулон с этим. – mist