2012-03-18 4 views
1

Iterable을 구현하는 클래스에서 테스트를 시도하고 있습니다. itorator 클래스에서 hasNext(), next()와 같은 메서드를 테스트하려고 할 때. 그래서 list.itorator()를 호출 할 때 Next(); 아무 일도 일어나지 않는다. 노드는 다음 노드가 아닌 목록의 현재 노드이다. 하지만 할 때 ListIterator itrList = new ListIterator (list); 그 안에 코드가 작동합니다. public Iterator iterator() {새 ListIterator (this)를 반환합니다. 그럼 내가 옳게/쥐고있는 것은 무엇입니까? 도움 주셔서 감사합니다.Junit은 Iterable을 구현합니다.

public void test6() { 
    List<String> list = new List<String>(); 

    list.addAfterCurrent("1"); 
    list.addAfterCurrent("2"); 
    list.addAfterCurrent("3"); 
    ListIterator itrList = new ListIterator(list); 


    TextIO.putln(list.iterator().next()); // output is 1 
    TextIO.putln(list.iterator().next()); // output is 1 
    TextIO.putln(itrList.next());   // output is 1 
    TextIO.putln(itrList.next());   // now output is 2   
    assertEquals("1", list.getCurrent()); 
    assertEquals(3, list.size()); 

} 

답변

7

list.iterator()에 전화 할 때마다 새로운 반복기가 생성됩니다. 동일한 반복기를 유지하고 next 메소드를 여러 번 호출하려는 경우 (예 :

Iterator itr = list.iterator(); 
assertEquals(1, itr.next()); 
assertEquals(2, itr.next()); 
+0

고맙습니다. – Sloshy

0

매번 새로운 이터레이터를 만들고 처음부터 다시 시작합니다.

관련 문제