3

main メソッドは 1 つしかありません。System.out.println() をチェックし、JUnit を使用して自動的に値を入力するように Scanner を置き換える方法は?

PSお願いします、いくつかの解決策を提供してください...

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);
    }
}
4

2 に答える 2

7

理想的には、厄介な依存関係を抽出して、それらなしでテストできるようにします。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
}

( forのWriter代わりに aを使用することを検討してください。)PrintStreamoutput

次に、単体テストを実際に行う必要はありませんが、 に基づいてを使用してmainテストし、に基づいて出力し、必要な入力を提供して出力を確認できます。doWorkScannerStringReaderStringWriter

于 2012-09-08T14:45:03.150 に答える