12

たとえば、次のようにテストするにはどうすればよいですか。

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

iterator()この " " メソッドをテストするには?

ありがとう。

4

2 に答える 2

21

私が考えることができるいくつかのテストは次のとおりです。

  • 空のコレクションで hasNext をテストします (false を返します)
  • 空のコレクションで next() をテストします (例外をスローします)
  • 1 つのアイテムを持つコレクションで hasNext をテストします (true を数回返します)
  • 1 つのアイテムを持つコレクションで hasNext/next をテストします。hasNext は true を返し、next はアイテムを返し、hasNext は false を 2 回返します。
  • そのコレクションの削除をテストします。サイズが 0 であることを確認します
  • 削除を再度テストします: 例外
  • 複数のアイテムを持つコレクションを使用した最終テストでは、反復子が各アイテムを正しい順序で処理することを確認します (存在する場合)。
  • コレクションからすべての要素を削除します: コレクションは空になりました

openJDK で使用されているテストも参照できます。

于 2013-02-17T11:06:38.137 に答える
1

あなたはそうしない。

オラクルとサンの連中はすでにそれを行っています。

イテレータの独自の実装を作成する場合は、AFAIR 2 メソッドを実装する必要があり、それらが契約に従っているかどうかを確認する必要があります。

つまり、基になるコレクションの次の要素を返すか、例外をスローして、後続の要素があるかどうかを伝えます。イテレータでこれらのメソッドを呼び出して、結果をアサートするだけです。

于 2013-02-19T17:17:54.010 に答える