Тестирование метода с вводом с консоли JUint

При написание тестов в JUnit столкнулся с определенной проблемой. Имеется метод, внутри которого запрашивается ввод с консоли int значения:

cmd = sc.nextInt();

Дальше эта переменная используется в switch конструкции.

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


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

Автор решения: VincentVega

Вы можете подменить System.in собственным потоком, вызвав System.setIn(InputStream in)

InputStream sysInBackup = System.in;
ByteArrayInputStream in = new ByteArrayInputStream("Любая строка".getBytes());
System.setIn(in);

// Пихаете сюда ваш switch

// Возвращает System.in к оригиналу (необязательно)
System.setIn(sysInBackup);
→ Ссылка