Как я могу протестировать метод, который требует ввода с клавиатуры? - PullRequest
0 голосов
/ 29 февраля 2020

Итак, я пишу метод stati c, который возвращает среднее значение всех оценок, которые вы указали. Вот код:

 public static float average() throws IOException {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        float sum=0;

        System.out.print("ammount of clases: ");
        int classes = Integer.parseInt(reader.readLine());

        for (int i = 0; i < classes; i++) {

            System.out.print("input the grade: ");
            float grade = Integer.parseInt(reader.readLine());

            sum += grade;

        }

        float average = sum / classes;

        return average;
    }

Я хочу выполнить тесты в Junit, чтобы убедиться в этом код solid (весь смысл в том, чтобы узнать о JUNIT, я знаю, что сам код не является чем-то особенным).

Проблема: этот метод требует, чтобы я вводил значения с клавиатуры, чтобы что-то вернуть. Я понятия не имею, как я мог изменить входной поток, чтобы принимать определенные c значения в моих тестах junit. Как бы вы порекомендовали мне go об этом или что бы вы посоветовали мне посмотреть?

1 Ответ

3 голосов
/ 29 февраля 2020

уберите BufferedReader из вашего метода, например, измените сигнатуру вашего метода на

 public static float average(BufferedReader reader) throws IOException {}

и в своем модульном тесте дайте этому методу ридер, который читает из файла или из строки, где вы помещаете требуемый входные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...