Я хочу протестировать метод сообщения из другого класса, тестового класса, но независимым образом, чтобы тестовый класс вызывал метод сообщения и вводил предварительно определенное значение для количества строк и фактического сообщения.Поэтому, когда метод вызывается, значение 1 вводится в консоли при запросе номера строки, а затем после запроса сообщения вводится строка «привет, как дела» сегодня в консоли.Ниже у меня есть метод сообщения из одного класса и часть тестового класса, которая будет проверять пользовательский ввод.
Итак, мой вопрос: как я могу заставить тестовый класс вызывать метод сообщения (который находится в другом классе) и когда этот метод сообщения запускается, вводить значения в сканер по мере необходимости, а затем это сообщениеМетод продолжает работать до конца.
Я думаю, что это связано с потоком ввода.Однако, так как я пытаюсь ввести значения в сканер в другом классе, это не работает.Я видел похожие вопросы, связанные с имитацией ввода со сканера, но они относятся к одному классу и напрямую общаются со сканером тем же методом.Я хочу, чтобы эти вещи были отдельными, чтобы при удалении / удалении тестового класса класс, в котором находится метод сообщения, работал бы как обычно.
Нажмите здесь, чтобы увидеть консоль дляМетод сообщения
public static String message() {
//Asks the user for the number of lines in the message
Scanner lines = new Scanner(System.in);
System.out.print("Enter how number of lines in the message: ");
//if user doesn't enter a number, it keeps asking for one
while(!lines.hasNextInt()) {
System.out.print("Error! Please Choose a Number:");
lines.next();
}
//the number of lines is stores in an array where each index is a line
String[] input = new String[lines.nextInt()];
System.out.println("Enter the message: ");
lines.nextLine(); //consuming the <enter> from input above
//each index is given a line to store
for (int i = 0; i < input.length; i++) {
input[i] = lines.nextLine();
}
//message if turned into a one line string and returned
String message = (Arrays.toString(input).replaceAll("\\W", "")).toLowerCase();
return message;
}
String keyTest5 = "1";String keyTest6 = "adbh, sdba";
SarmanEncryption inputOutput= new SarmanEncryption();
inputOutput.message();
InputStream num = new ByteArrayInputStream(keyTest5.getBytes());
System.setIn(Integer.parseInt(num));
InputStream message = new ByteArrayInputStream(keyTest6.getBytes());
System.setIn(message);