イテレータを持つこのメソッドをどのように渡すかわからないので、この単純なJUnitテストメソッドに執着しています。もし誰かが見ていることが本当に役立つだろう。ここでJUnitのテストメソッドが失敗します
がメインクラスです:
public class Main {
public static void main(String[] args) {
final List<Integer> numbers = Arrays.asList(3, 4, 6, 1, 9);
final Integer x = Integer.valueOf(1);
System.out.println(findSame(numbers.iterator(), x, 0));
}
public static final int findSame(Iterator<Integer> iterator, Integer x, int idx) {
if (!iterator.hasNext()) {
return -1;
}
if (iterator.next().equals(x)) {
return idx;
} else {
return findSame(iterator, x, idx+1);
}
}
}
ここでは機能しない私のテストトライアル方法が、あります。私はそれをよく理解している場合は
が@Test
public void searchNumReturnsIndex1(){
Main instance = new Main();
int x = 1;
Iterator<Integer> iterator;
int result = Main.findSame(null, x, 3);
assertEquals(2, instance.findSame(null,x, 3));
}
'assertEquals(1、instance.searchNum(x、2)); '** **なぜあなたは結果が** 1 **であるべきだと主張しているのですか?あなたの検索関数**は、2番目の引数(2)以降を検索するので、1を返すこともできないので、返す可能性が最も低い番号は** 2 **です。 –
@ErwinBolwidt確かに、私はassertEquals(2、instance.searchNum(x、2));まだ失敗しています。 – Camila
数値は決して初期化されません。テスト結果の印刷出力を含める必要がありますが、結果としてNULLポインタの例外が発生します。 – Tezra