Java. JUnit имитация пользовательского ввода

Возникла проблема при тестировании функции, в которой присутствует запрос на ввод. При запуске теста, JUnit пропускает запрос на ввод, а каким образом подменить его (ввод) не знаю. (Не судите строго мой говнокод) Тестируемая функция:

public static int checkNumber() {
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
        int number = -1;
        try {
            number = Integer.parseInt(reader.readLine());
            if (number < 0 || number > 255) {
                throw new IOException();
            }
            return number;
        } catch (NumberFormatException n) {
            throw new  IOException();
        }
    } catch (IOException e) {
        System.out.println(INVALID_INPUT);
    }
    return -1;
}

Ну и тест по сути должен вызывать эту функцию, подменять ввод и успешно завершаться. Видел, что можно каким - то образом сотворить магию с помощью Mockito, но не понял, может быть есть какие - то другие способы. Буду рад, если вы все подробно объясните, спасибо!

...

Нашел вот такое решение, и оно действительно работает:

ByteArrayInputStream in = new ByteArrayInputStream("My string".getBytes());
System.setIn(in);

Ответы (0 шт):