JUnitとTDDについてもっと知りたいのですが、テストケース間の結合に関していくつかの問題が発生しています。
特定のデータ型のAPIのテストケースを作成している場合、たとえばDeque<T>
、テストケース間の結合を制限するにはどうすればよいですか?たとえば、メソッドのテストケースを作成している場合insertFirst(T item)
、適切に初期化されたオブジェクトでメソッドを呼び出した後、2つのことをアサートできるはずだと考えるのは簡単なようです。
- オブジェクトのサイズを
Deque
1つ増やす必要があります - その後、対応する
T removeFirst()
メソッドを呼び出すと、最初の呼び出しで挿入したオブジェクトへの参照が返されます。
ただし、これにより、少なくとも2つのテストケース間に望ましくない結合が発生します。1つのテストケースの合格は、別のAPIメソッドの正しい実装に依存します。たとえば、このテストケースに合格するには、内のアイテムの数を確認したり、アイテムDeque
を削除したりするための正しい実装が必要になります。これらの方法のいずれかのテストが何らかの理由で正しくないか不完全である場合、そのinsertFirst
方法のテストは自動的に疑わしいものになります。
このシナリオを回避するためのベストプラクティスは何ですか?テストケースを書くための私のアプローチは、何らかの形で間違っていますか?