私は現在、今後のプロジェクトでテストをどのように実行すべきかを調査しています。開発プロセスの早い段階でバグを見つけるために、開発者は実際のコードの前に単体テストを作成します (TDDish)。単体テストは、必要に応じて単体 (この場合はメソッド) に焦点を当てるため、依存関係がモック化されます。
今、私はこれらのユニットが他のユニットと相互作用するときにもテストしたいと思っています.ユニットテストはすでに書かれているので、これを行うための効果的なベストプラクティスがあるべきだと考えていました. 私の考えでは、単体テストは再利用されますが、モックされたオブジェクトは削除され、実際のものに置き換えられます。私が今持っているさまざまなアイデアは次のとおりです。
- モック オブジェクトを使用するかどうかを決定する各テスト クラスでグローバル フラグを使用します。このアプローチには、いくつかの
if
ステートメントが必要です - 「instanceWithMocks」または「instanceWithoutMocks」のいずれかを作成するファクトリ クラスを使用します。このアプローチは、新しい開発者が使用するのが面倒で、追加のクラスが必要になる場合があります
- 統合テストを単体テストから別のクラスに分離します。ただし、これには多くの冗長なコードが必要になり、テスト ケースの維持には 2 倍の作業が必要になります。
私の見方では、これらすべてのアプローチには長所と短所があります。これらのうちどれが好まれますか、またその理由は何ですか? また、単体テストから統合テストに効果的に移行するためのより良い方法はありますか? それとも、これは通常、他の方法で行われますか?