Как написать тест JUnit для ListIterator в java, чтобы проверить, установлен ли listiterator на определенный индекс

Я пытаюсь написать код, который может установить начало моего Iterator на определенный индекс, и этот метод должен создать и вернуть объект, который реализует ListIterator и расположен в этом связанном списке непосредственно перед узлом в месте, соответствующем индексу.

Вот метод, который я написал, но я не знаю, как написать тестовый код Junit для проверки моего метода, он всегда будет показывать мне поток переполнения стека. Метод должен возвращать ListIterator, который начинается с индекса.

Метод:

public ListIterator<E> listIterator(int index) {
    ListIterator <E> myIter = listIterator();
    if ( index < 0 || index > size) {
        throw new IndexOutOfBoundsException();
    }
    else {
        for ( int i = 0; i < index && myIter.hasNext(); i++) {
            myIter.next();
        }

    }
    return (ListIterator<E>) myIter;
}

JUnit test: открытый класс KWLinkedListTest расширяет TestCase {

private KWLinkedList <String> myList;

@Before
public void setUp() throws Exception {

    myList = new KWLinkedList<String>();
    myList.add("Top");
    myList.add("Mid");
    myList.add("Jg");
    myList.add("Sup");
    myList.add("Adc");
    ListIterator <String> myIter = myList.listIterator();


}

@Test
public void testlistiterator() {

    myList.listIterator(2);
    assertEquals(myList.next(),"Mid");
}

person Jesse Jiang    schedule 19.03.2019    source источник


Ответы (1)


Я столкнулся с трудностями при воспроизведении вашей проблемы в тестовом проекте с использованием предоставленного вами кода.

ListIterator <E> myIter = listIterator(); вызывает себя без обязательного аргумента. Даже если бы аргумент был предоставлен, это привело бы к бесконечной рекурсии / переполнению стека.

size - нераспознанный символ.

Код для типа KWLinkedList отсутствует.

person Shaun Ediger    schedule 19.03.2019