Как принять ввод от пользователя в консоли Junit

Я пытаюсь написать тестовый пример Junit для функции, приведенной ниже:

class A{
  int i;
  void set()
  {
    Scanner in=new Scanner(System.in);
    i=in.nextInt();
  }
}

Теперь моя проблема заключается в том, что когда я создаю для него тестовый пример Junit, он не исключает входные данные от пользователя:

 public void testSet() throws FileNotFoundException {
    System.out.println("set");
    A instance = new A();
    int i=1;
    instance.set(i);
    // TODO review the generated test code and remove the default call to fail.
    //fail("The test case is a prototype.");
}

Пожалуйста, предложите, что я должен сделать, чтобы принять ввод от пользователя.

1 ответ

Ты можешь использовать System.setIn() чтобы смоделировать ввод пользователя:

String inputData = "user input data";
System.setIn(new java.io.ByteArrayInputStream(inputData.getBytes()));

Теперь, если вы позвоните set() Метод будет читать данные из вашей строки, а не из стандартного ввода.

Другие вопросы по тегам