12

例如,我如何测试:

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

如何测试这个“ iterator()”方法?

谢谢。

4

2 回答 2

21

我能想到的几个测试是:

  • 在空集合上测试 hasNext(返回 false)
  • 在空集合上测试 next()(抛出异常)
  • 在包含一项的集合上测试 hasNext(多次返回 true)
  • 在一个包含一个项目的集合上测试 hasNext/next:hasNext 返回 true,next 返回项目,hasNext 返回 false,两次
  • 在该集合上测试删除:检查大小为 0 之后
  • 再次测试删除:异常
  • 使用包含多个项目的集合进行最终测试,确保迭代器以正确的顺序遍历每个项目(如果有的话)
  • 从集合中删除所有元素:集合现在是空的

您还可以查看openJDK 中使用的测试

于 2013-02-17T11:06:38.137 回答
1

你没有。

来自 oracle 和 sun 的人已经这样做了。

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

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

于 2013-02-19T17:17:54.010 回答