2013-02-17 16 views
11

Na przykład, w jaki sposób mogę przetestować:Jak JUnit przetestować iteracyjnej

ArrayList<String> list = new ArrayList<String>(); 
list.iterator(); 

Jak przetestować tę metodę „iterator()”?

Dzięki.

+0

Dlaczego chcesz przetestować 'iterator()'? – m0skit0

+1

Napisałem własny iterator dla jednej z moich klas i chcę przetestować wszystko na temat tego iteratora (prawdopodobnie next(), hasNext() ... puste rzeczy na skrzynkę) –

Odpowiedz

17

Nieliczne badania mogę myśleć to:

  • Test hasNext na pustej kolekcji (zwraca false)
  • testu next() na pusty kolekcji (rzuca wyjątek)
  • testową hasNext na zbiór z jednego elementu (zwraca true, kilka razy)
  • testowym hasNext/następnego na zbiór z jednego elementu: hasNext zwraca true, następnie zwraca pozycję, hasNext zwraca false, dwukrotnie
  • próba usunięcia tego kol lekcja: wielkość wyboru jest 0 po
  • próba usunięcia ponownie: wyjątek
  • test końcowy z kolekcji z kilku elementów, upewnij się, że iterator przechodzi każdej pozycji, w odpowiedniej kolejności (jeśli istnieje)
  • usuń wszystkie elementy z kolekcji: kolekcja jest teraz pusta

Możesz również rzucić okiem na the tests used in openJDK.

+0

, aby dodać do tej kompleksowej odpowiedzi. innym testem może być: sprawdzenie wyjątku, jak "ConcurrentModificationException", gdy elementy listy są zmieniane jednocześnie, podczas gdy iterator iteruje na liście. –

3

Nie musisz.

Faceci z wyroczni i słońca już to zrobili.

Jeśli tworzysz własną implementację iteratora, musisz wdrożyć metody AFAIR 2 i musisz sprawdzić, czy są one zgodne z umową.

Oznacza to: zwracanie następnego elementu kolekcji podstawowej lub wyrzucanie wyjątku i informowanie, czy występują kolejne elementy. Po prostu wywołaj te metody na swoim iteratorze i potwierdź wynik.