私のプログラムの統合テストがすでにあり、それらすべてが合格した場合、それはうまくいくと感じています。次に、単体テストを作成/追加する理由は何ですか?とにかく統合テストを書く必要があるので、統合テストでカバーされていない部品の単体テストのみを書きたいと思います。
統合テストよりも単体テストの利点を知っているのは
- 小さく、したがって高速に実行できます(ただし、テストに新しいユニットを追加すると、統合テストで既にテストされているため、テストスーツ全体が大きくなり、実行時間が長くなります)
- 1つのことしかテストしないため、バグを見つけやすくなります(ただし、統合テストが失敗した場合は、個々のパーツを検証するために単体テストの書き込みを開始できます)
- 統合テストで検出されない可能性のあるバグを見つけます。たとえば、マスキング/オフセットのバグ。(ただし、統合がすべてのパスをテストする場合、プログラムは隠れたバグが存在する場合でも動作します。したがって、将来の統合テストを中断したり、パフォーマンスの問題を引き起こさない限り、これらのバグを見つける/修正することは優先度が高くありません)
そして、私たちは常により少ないコードを書きたいのですが、単体テストを書くにはもっと多くのコードが必要です(主にモックオブジェクトをセットアップします)。単体テストと統合テストのいくつかの違いは、単体テストではモックオブジェクトを使用し、統合テストでは実際のオブジェクトを使用することです。重複が多く、コードの動作を変更するためのオーバーヘッドが追加されるため、テストでもコードの複製は好きではありません(リファクタリングツールは常にすべての作業を行うことはできません)。