2011-06-20 73 views
0

可能顯示的文件:
Java, Junit - Capture the standard input/Output for use in a unit test
JUnit test for System.out.println()JUnit進行測試的System.out值

我已經寫類似於如下所示的一段代碼。我想單元測試這個方法,現在我被困在System.out部分。假設用戶輸入爲12.這會提示用戶輸入「錯誤的號碼,再試一次」。是否可以測試這個輸出,或者使用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; 
    } 

在此先感謝。

+0

這個問題的重複:http://stackoverflow.com/questions/1119385/junit-test-for-system-out-println這裏有一個很好的答案。 – Elk

回答

3

System.out的類型是java.io.PrintStream。如果您可以模擬或傳遞另一種可以將輸出捕獲到StringReader的PrintStream,則可以聲明其值。