ごく基本的な質問がありましたら申し訳ございません。012 Webサービスのセット(.Net WebApiを使用して開発されています)があります。これらのサービスは、ビジネス層またはデータアクセス層APIです。これらのAPIは、他のサービスまたはデータベース自体に依存しています。他のサービスやデータベースに依存しているサービスの単体テストを書く方法
単体テストケースを作成したいと思います。次の質問があります。
ビジネスレイヤAPIはデータアクセスサービスやその他のサービスに依存しているため、ビジネスAPIを呼び出すためだけに単体テストを書くと、データアクセスAPIが呼び出されます。これは単体テストケースを書く正しい方法ですか?またはすべての依存オブジェクトにユニットテストを注入する必要がありますか?私は以前のものがユニットテストではなく統合テストであると思います。
データアクセス層の単体テストを書くべきでしょうか?私はこのリンク(Writing tests for data access code: Unit tests are waste)をチェックし、DALは単体テストを必要としないと言います。私はまだデータアクセス層のテストを書くべきですか?私はユニットテストではなく、統合テストになると思いますか?
2の場合、ビジネスロジックがDALにどれだけあるかによって異なります。テスト可能なロジックがあれば、単体テストがコードを信頼できるものにするのに役立つのではないかと思われます。 DALが単純なCRUD操作を行っているだけの場合は、UTにとって意味がないと思います。 1の場合、ベストプラクティスでは、すべてのサービスでインターフェイスを実装する必要があります。 UI - >ビジネス - > DALの場合は、IBusinessとIDALがあり、各インターフェースをUTモックや偽物でテスト可能にすることができます。 –
私は人々が「正しい」または「スマート」を鳴らしたいという欲求の中で用語に捉えすぎていると思います。退行を防ぐテストをすることは*良いこと*です。これらのテストがデータベースに触れるかデータベースに触れないかは、実際には大規模なスキームでは問題になりません。テストを行う==良い、テストしない==悪い。純粋な単体テストが必要な場合は、すべての依存関係に偽装された実装を注入する必要があります。私はFakeItEasyが好きですが、あなたがそれを行うのを助ける他のフレームワークがあります。あなたのDALがデータの読み書き以外のロジックを実行する場合は、それをテストする必要があります。 –