2012-09-08 3 views
1

주 방법은 하나뿐입니다. System.out.println()을 확인하고 Scanner를 JUnit을 사용하여 자동으로 입력 값으로 바꾸는 방법은 무엇입니까?콘솔 입력 및 출력에 대한 JUnit 테스트

P. 제발, 몇 가지 솔루션을 제공하십시오 ...

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    int[] arr = new int[4]; 

    for (int i = 0; i < arr.length; i++) { 
     arr[i] = scanner.nextInt(); 
    } 

    for (int i = 0; i < arr.length; i++) { 
     int res = 0; 
     int k = 0; 
     int num = arr[i]; 
     /*.....*/ 
     System.out.println(num); 
    } 
} 
+0

왜이 JUnit? –

+0

작업 방법을 배우고 싶습니다. – Pretto

답변

6

이상적으로, 당신이 그들을 테스트 할 수 있도록 이상한, 의존성을 추출하십시오. 변경 main 단순히 :

public static void main(String[] args) { 
    doWork(new Scanner(System.in), System.out); 
} 

// TODO: Rename to something meaningful 
public static void doWork(Scanner input, PrintStream output) { 
    // Remainder of code 
} 

(output에 대한 Writer 대신 PrintStream (A)의 사용을 고려하십시오.)

그런 다음 당신이 정말로 단위 테스트 main 할 필요가 없습니다 -하지만 당신이 Scanner 기반으로 사용 doWork을 테스트 할 수 있습니다 StringReader에 입력하고 StringWriter을 기반으로 출력하고 원하는 입력을 제공하고 출력을 확인합니다.

+0

예를 들어 정보 입력을위한 여러 프롬프트에 해당하는 여러 입력을 사용하려면 어떻게해야합니까? – CodyBugstein

관련 문제