简体   繁体   中英

How to JUnit test a iterator

For example, how do I test:

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

How to test this " iterator() " method?

Thanks.

The few tests I can think of are:

  • test hasNext on an empty collection (returns false)
  • test next() on an empty collection (throws exception)
  • test hasNext on a collection with one item (returns true, several times)
  • test hasNext/next on a collection with one item: hasNext returns true, next returns the item, hasNext returns false, twice
  • test remove on that collection: check size is 0 after
  • test remove again: exception
  • final test with a collection with several items, make sure the iterator goes through each item, in the correct order (if there is one)
  • remove all elements from the collection: collection is now empty

You can also have a look at the tests used in openJDK .

You don't.

Guys from oracle and sun have already done that.

If you create your own implementation of iterator then you have to implement AFAIR 2 methods and you have to check if they obey to the contract.

Now that means: returning next element of underlying collection or throwing an exception and telling if there are subsequent elements. Just call those methods on your iterator and assert the result.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM