0

私のクラスには、要素をキャッシュに入れる単純なメソッドがあります。

public void Put(TItem item)
{
  // Do something
}

複数の要素を一度に配置できる別のメソッドを追加しました。

public void Put(IEnumerable<TItem> items)
{
    foreach (var item in items)
    {
        Put(item);
    }
}

重複を避けるために、Put を何度も呼び出していることだけを確認する必要があるようです。ただし、これは依存関係ではないため、間接的にしか実行できません。これらの種類のメソッドをテストするときにコピー/貼り付けを避ける方法はありますか? Put のいくつかの結果を確認するためにスモーク テストを実行できますが、それ自体に多くの単体テストが含まれており、この場合は完全ではありません。状況から抜け出す良い方法はありますか?

4

1 に答える 1

4

Putさまざまな条件でテストを行いますが、それ自体の結果の検証は最小限に抑えます。アイテムが配置されているかどうかを確認するかなり簡単な方法があると思いますか?

可能なテスト:

  • NULL 引数
  • 空のコレクション
  • 1 つのエントリを持つコレクション (サニティ)
  • 2 つのエントリを持つコレクション (サニティ)
  • エントリが繰り返されるコレクション (x、y、x)
  • 可能であれば、初期エントリを配置すると例外が発生するコレクション

foreach確かに、これは単純なループではやり過ぎと見なされる可能性があります。「恐怖が退屈に変わるまでテストする」というマントラが好きです。

于 2013-04-08T07:53:17.250 に答える