ユニットテストに関するこの質問は、私を悩ませている別のことを引き起こしました。データベースにアクセスするときに単体テストを実行する3つの方法を行ったり来たりしました。
- モックオブジェクトを作成してプラグインします。これにはデータベースが不要であるという利点がありますが、時間がかかり、投資収益率がどれだけ得られるかわかりません。私はIOCとmoqに少し慣れてきましたが、それでも苦痛のようです。
- セットアップおよびティアダウンデータベーススクリプトを作成して既知のケースを作成し、それらをテストします。繰り返しになりますが、時間のかかる作業になる可能性がありますが、ほとんどの場合、モックオブジェクトよりも簡単に作成できます。また、ローカルホストにSQLサーバーがあることを前提として、職場の他のユーザーは引き続きそれを実行できます。
- devデータベースを手動でチェックし、単体テストを変更します。集中的に手作業ですが、変わらない「テストセット」があれば大丈夫そうです。私のマシンでは、少なくとも:-)。
オプション1が単体テストを行うための「適切な」方法であることは知っていますが、3つのうち、おそらく私が最も使用しなかったオプションです(ただし、最新のプロジェクトはIOCを使用しているため、ドアが開いています)。私はそれの多くが正確に何が嘲笑され、何がテストされているかに依存することを理解していますが、私はここで何が欠けていますか?
コンテキストが役立つ場合、私はC#ショップにいて、社内アプリケーションを作成していますが、開発者はごくわずかです。