2012-09-08 77 views
1

我只有一个方法main。如何检查System.out.println()并将Scanner替换为使用JUnit自动输入值?JUnit测试控制台输入和输出

P.S.请提供一些解决方案...

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 
} 

(考虑使用的Writer代替PrintStreamoutput

那么你并不真的需要进行单元测试main - 但你可以使用基于Scanner测试doWorkStringReader上,输出基于StringWriter,提供你想要的任何输入并检查输出。

+0

我怎样才能使用这个例子,多个输入对应多个提示信息? – CodyBugstein