Как 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, и вы должны проверить, подчиняются ли они контракту.
теперь это означает: возврат следующего элемента базовой коллекции или создание исключения и указание, есть ли последующие элементы. Просто вызовите эти методы на своем итераторе и утвердите результат.