2012-05-10 3 views
0

Я пишу тест JUnit, который должен ждать ввода пользователя перед запуском; сценарий что-то вроде:Захват ввода клавиатуры в тесте JUnit

  • Начиная Запуск теста
  • Ожидать какую-то внешнюю операцию, не может быть автоматизирован/издевался для завершения; пользователь должен выполнить некоторую ручную деятельность, а затем уведомляет тест, чтобы продолжить
  • Продолжать работу

Я пытался использовать

System.out.println("Press enter to continue"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
reader.readLine(); 
System.out.println("Resuming..."); 

, но он не работает, так как не System.in похоже, принимают ввод с клавиатуры в рамках теста.

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

Могу ли я это сделать, или я должен перенести свой тест на обычную (т. Е. Не-Junit) программу?

Благодаря

+1

Вы заявляете решение, которое вы себе представляли для проблемы. Если вы сообщите нам, какова фактическая проблема, мы сможем предложить лучшие идеи/альтернативы. –

ответ

1

Если требуется пользовательский ввод это на самом деле не юнит тест - не рассматривать его как таковой.

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

+2

Да, это действительно не единичный тест, семантика совершенно другая. Мне просто нравятся средства запуска. Мне было интересно, возможно ли это в JUnit, я думаю, я сделаю это программой. – xpapad

Смежные вопросы