Java 如何JUnit测试迭代器

Java 如何JUnit测试迭代器,java,unit-testing,testing,junit,Java,Unit Testing,Testing,Junit,例如,如何测试: ArrayList<String> list = new ArrayList<String>(); list.iterator(); ArrayList list=new ArrayList(); iterator(); 如何测试这个“iterator()”方法 谢谢。我能想到的几个测试是: 在空集合上测试hasNext(返回false) 在空集合上测试next()(引发异常) 对具有一个项的集合测试hasNext(多次返回true) 对具有一个项

例如,如何测试:

ArrayList<String> list = new ArrayList<String>();
list.iterator();
ArrayList list=new ArrayList();
iterator();
如何测试这个“
iterator()
”方法


谢谢。

我能想到的几个测试是:

  • 在空集合上测试hasNext(返回false)
  • 在空集合上测试next()(引发异常)
  • 对具有一个项的集合测试hasNext(多次返回true)
  • 对具有一个项的集合测试hasNext/next:hasNext返回true,next返回该项,hasNext返回false,两次
  • 在该集合上测试删除:检查后的大小是否为0
  • 再次删除测试:异常
  • 对包含多个项的集合进行最终测试,确保迭代器以正确的顺序遍历每个项(如果有)
  • 从集合中删除所有元素:集合现在为空
你也可以看看。

你没有

甲骨文和太阳的人已经做到了

如果您创建自己的迭代器实现,那么您必须实现AFAIR 2方法,并且必须检查它们是否遵守合同


现在这意味着:返回基础集合的下一个元素,或者抛出异常并告知是否有后续元素。只需在迭代器上调用这些方法并断言结果。

为什么要测试
迭代器()
?我为我的一个类编写了自己的迭代器,我想测试关于迭代器的所有内容(可能是next(),hasNext()…空案例内容),以添加到这个全面的响应中。另一个测试可以是:当迭代器在列表上迭代时,同时更改列表元素时,检查异常,如
ConcurrentModificationException
。您应该删除这个答案,@piotrek:问题是关于测试实现
迭代器的类,而不是测试
迭代器本身。此外,测试迭代器本身是不可能的,因为它是一个接口。