2011-06-20 6 views
0

Doublons possibles:
Java, Junit - Capture the standard input/Output for use in a unit test
JUnit test for System.out.println()tests JUnit System.out valeurs

J'ai écrit un morceau de code similaire à celui ci-dessous. Je veux tester cette méthode unitaire, et maintenant je suis coincé à la partie System.out. Disons que l'entrée de l'utilisateur était 12. Cela inciterait l'utilisateur avec "numéro incorrect, essayez à nouveau.". Est-il possible de tester cette sortie, ou est-ce impossible en utilisant JUnit?

 public static int testUserInput() { 
      Scanner keyboard = new Scanner(System.in); 
      System.out.println("Give a number between 1 and 10"); 
      int input = keyboard.nextInt(); 

      while (input < 1 || input > 10) { 
       System.out.println("Wrong number, try again."); 
       input = keyboard.nextInt(); 
      } 

      return input; 
    } 

Merci d'avance.

+0

Répétition de cette question: http://stackoverflow.com/questions/1119385/junit-test-for-system-out-println Il y a une excellente réponse ici. – Elk

Répondre

3

System.out est de type java.io.PrintStream. Si vous pouvez mocker ou passer un autre type de PrintStream qui peut capturer la sortie dans un StringReader, vous pouvez affirmer ses valeurs.