ソフトウェアテストの手法は非常に多様であり、それらについて自分自身を教育すればするほど、多くの異なる(そして時には矛盾する)ガイダンスを見始めるようになります。行くべき単一の「本」はありません。
私はあなたが次のようなことを言うユニットテストのためのいくつかのガイダンスを見た状況にいると思います
- 各テストはスタンドアロンであり、他のテストの影響を受けないようにする必要があります
- 各ユニットテストは1つのことをテストする必要があります。
- 単体テストはデータベースにヒットしないはずです
等々。'unit test'の定義方法に応じて、これらはすべて正しいです。
「ユニットテスト」は、「他の依存コンポーネントから分離されたコードの1ユニットに対して1つの機能を実行するテスト」のようなものとして定義します。
その定義の下で、あなたがしていること(テストを実行する前にデータベースにレコードを追加する必要がある場合)は、まったく「単体テスト」ではなく、一般に「統合テスト」と呼ばれるものです。(私の定義では、真の単体テストはデータベースにヒットしないため、削除する前にレコードを追加する必要はありません。)
統合テストは、(例えば、ユーザインタフェースとして複数のコンポーネント使用機能行使するとデータベース)、及びユニットテストに適用されるガイダンスは必ずしも統合テストには適用されません。
他の人が答えで述べたように、ユニットテストのガイダンスに反することをしても、あなたがしていることは必ずしも間違っているわけではありません。代わりに、各テストメソッドで実際にテストしているものについて推論し、テストを満たすために複数のコンポーネントが必要であり、一部のコンポーネントが事前設定を必要とする場合は、先に進んでください。
しかし、何よりも、多くの種類のソフトウェアテスト(単体テスト、システムテスト、統合テスト、探索テストなど)があることを理解し、1つのタイプのガイダンスを他のすべてに適用しようとしないでください。