VisualStudio2012を使用してテスト駆動開発を実現したいと思っています。
http://tfs.visualstudio.comを使用して自動化された単体テストを実行したいのは、テストを実行するためのビルドサーバーを提供しているからです。
コードをアップロードしたとき、データベースを探していたため、すべてのテストが失敗しました。
テスト自動化のベストプラクティスは何ですか?
SQL Server Compactまたは実際のデータベースを使用する必要がありますか?
VisualStudio2012を使用してテスト駆動開発を実現したいと思っています。
http://tfs.visualstudio.comを使用して自動化された単体テストを実行したいのは、テストを実行するためのビルドサーバーを提供しているからです。
コードをアップロードしたとき、データベースを探していたため、すべてのテストが失敗しました。
テスト自動化のベストプラクティスは何ですか?
SQL Server Compactまたは実際のデータベースを使用する必要がありますか?
テストをストレージメカニズムから独立させるために、リポジトリのデザインパターンを確認することをお勧めします。そうすれば、実際のデータベースがなくてもテストを実行できるようになります。
リポジトリのデザインパターンにより、ストレージメカニズムを簡単に切り替えることができます。そうすれば、コードが本番環境にデプロイされたときに実際のデータベースを使用できるようになり、テスト目的でモックまたはメモリ内ストレージを使用できるようになります。異なるリポジトリを簡単に切り替えるために、IoCフレームワークを確認することをお勧めします。IoC(制御の反転または依存性逆転)は、コードのテストを容易にするため、TDDの学習中によく学習される手法です。
これには多くの利点があります。
データベースに接続する必要がないため、テストはより高速に実行されます
スキーマについて心配したり、テスト間でデータベースを破棄したり、テストデータを作成したりする必要がないため、保守が容易になります。
リポジトリパターンを使用すると、コードに関心の分離を適用できます(単一責任の原則を参照)。これは、現在、コードがSQL Serverに緊密に結合されていると想定しているためです(DBなしではテストを実行できないため)。 。
ストレージメカニズムを簡単に変更できるようになります。
TDDの内部目標は、優れたコード設計を促進することです。ガイドラインについてはSOLIDの原則を、適切に設計された単体テストを行うための最初の原則を確認することをお勧めします。