内部でメソッド呼び出ししか持たないif else節をテストしなければならないときに問題が発生しました。JUnitとMockitoを使ってメソッドが別のクラスへのメソッド呼び出しを行うかどうかを調べる方法を教えてください。
public CLI(String[] input){
cliCheck(input);
}
public static void cliCheck(String[] input){
if (input.length == 0) {
System.out.println("No input");
Help.help();
System.exit(0);
}
if(input.length == 1){
if(input[0] .equals("help") || input[0] == "-h") {
Help.help();
System.exit(0);
}
}
inputParser(input);
}
コマンドラインインターフェイスプログラムの先頭部分のコードです。
入力がない場合、最初のifがtrueです。 ユーザーが "help"または "-h"を入力すると、2番目のifがtrueになります。 そうでない場合、入力文字列はinputParserメソッドのパラメータとして送信されます。これは私がこれまで持っているものである
...
@Test
public void cliCheckTest_Help(){
String[] input = {"help"};
CLI cli = new CLI(input);
Help help = mock(Help.class);
cli.cliCheck(input);
verify(help, times(1)).help();
}