Ich bin auf dieser einfachen JUnit Testmethode fest, wie ich nicht sicher bin, wie diese Methode übergeben wird, die Iterator hat. Wenn jemand einen Blick darauf werfen könnte, wäre das wirklich hilfreich. HierJUnit Testmethode schlägt fehl
ist Hauptklasse:
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);
}
}
}
Hier ist meine Test-Studie Methode ist, die nicht funktionsfähig ist. Ich habe Probleme mit Iterator hauptsächlich und wie diese speziellen Werte in diesem Testverfahren weitergeben müssen:
@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)); '** Warum ** meinst du, dass das Ergebnis ** 1 ** sein sollte? Ihre Suchfunktion ** kann nicht ** sogar 1 zurückgeben, weil sie ab dem zweiten Argument (2) sucht, so dass die niedrigste mögliche Anzahl ** 2 ** ist. –
@ErwinBolwidt Sicher, aber wenn ich AssertEquals (2, instance.searchNum (x, 2)); Es versagt immer noch. – Camila
Zahlen werden niemals initialisiert.Sie sollten den Ausdruck der Testergebnisse einbeziehen, dies sollte jedoch zu einer Nullzeiger-Ausnahme führen. – Tezra