Использование JUnit для тестирования основного метода, который требует симуляции ввода с клавиатуры с потоком ввода?
4334 просмотра
2 ответа
Давайте предположим, что у меня есть программа с методом main, который использует java.util.Scanner
класс для получения пользовательского ввода.
import java.util.Scanner;
public class Main {
static int fooValue = 0;
public static void main(String[] args) {
System.out.println("Please enter a valid integer value.");
fooValue = new Scanner(System.in).nextInt();
System.out.println(fooValue + 5);
}
}
Все, что делает эта программа, получает целочисленный ввод и выводит целое число плюс 5. Что означает, что я могу создать такую таблицу:
+-------+-----------------+
| Input | Expected output |
+-------+-----------------+
| 2 | 7 |
| 3 | 8 |
| 5 | 12 |
| 7 | 13 |
| 11 | 16 |
+-------+-----------------+
Мне нужно сделать тест JUnit для этого набора входных данных. Как проще всего подойти к такой проблеме?
Автор: zxgear Источник Размещён: 12.11.2019 09:14Ответы (2)
4 плюса
Вы можете перенаправить System.out, System.in и System.err следующим образом:
System.setOut(new PrintStream(new FileOutputStream("output")));
System.setErr(new PrintStream(new FileOutputStream("error")));
System.setIn(new FileInputStream("input"));
Таким образом, в вашем модульном тесте вы можете настроить это перенаправление и запустить свой класс.
Автор: Abaddon.Gutierrez Размещён: 24.06.2015 01:470 плюса
Библиотека системных правил предоставляет правила JUnit для таких тестов. Кроме того, вы должны использовать параметризованный тест.
Автор: Stefan Birkner Размещён: 04.07.2015 08:15Вопросы из категории :
- java В чем разница между int и Integer в Java и C #?
- java Как я могу определить IP моего маршрутизатора / шлюза в Java?
- java Каков наилучший способ проверки XML-файла по сравнению с XSD-файлом?
- java Как округлить результат целочисленного деления?
- java Преобразование списка <Integer> в список <String>
- java Почему я не могу объявить статические методы в интерфейсе?
- input Пользовательский ввод и аргументы командной строки
- input Определить количество строк в текстовом файле
- input Канонический и неканонический ввод с терминала
- input Python читает один символ от пользователя
- input Автоматически использовать весь ввод в WPF
- input Поместите значок внутри элемента ввода в форме
- junit Как вы утверждаете, что определенное исключение выбрано в тестах JUnit 4?
- junit Как установить длинный путь к классам Java в Windows?
- junit Как выполнить модульное тестирование кода JDBC в Java?
- junit различия между 2 классами JUnit Assert
- junit Java: Как проверить методы, которые вызывают System.exit ()?
- junit Что такое JUnit @Before и @Test