Как JUnit тестировать итератор

например, как проверить:

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

Как проверить этот "iterator()" способ?

спасибо.

2 ответов


несколько тестов, которые я могу придумать:

  • test hasNext на пустой коллекции (возвращает false)
  • test next () в пустой коллекции (исключение бросков)
  • test hasNext в коллекции с одним элементом (возвращает true, несколько раз)
  • test hasNext / next в коллекции с одним элементом: hasNext возвращает true, next возвращает элемент, hasNext возвращает false, дважды
  • test remove в этой коллекции: проверьте размер 0 после
  • тест удалить еще раз: исключение
  • итоговый тест с коллекцией из нескольких пунктов, убедитесь, что итератор проходит через каждый элемент в правильном порядке (если он есть)
  • удалить все элементы из коллекции: коллекция пуста

вы также можете посмотреть тесты, используемые в openJDK.


ты не знаешь.

ребята из oracle и sun уже сделали это.

Если вы создаете свою собственную реализацию iterator, то вам нужно реализовать методы AFAIR 2, и вы должны проверить, подчиняются ли они контракту.

теперь это означает: возврат следующего элемента базовой коллекции или создание исключения и указание, есть ли последующие элементы. Просто вызовите эти методы на своем итераторе и утвердите результат.