私もこれにはかなり慣れていないので、答えを少し塩で取ってください。しかし、他の誰も答えていないので...
サーバーを実際に実行する方法はありますか (テストの最初の開始)...
コマンド ラインから呼び出すことができる IIS Express を使用できます。[BeforeTestRun]
テストを実行する前に ( SpecFlowの属性を使用して実行できると思います) System.Diagnostics.Process
、.
実際のコマンドラインは次のようになります。
iisexpress.exe /path:c:\iisexpress\<your-site-published-to-filepath> /port:<anyport> /clr:v2.0
...そして、サーバーが特別な「テスト」DB(たとえば、メモリ内のRavenDBなど)を各シナリオの後に空にする(そしてバックグラウンド中にいっぱいにする)を使用するようにします。
特別なテスト DB を使用するには、データ アクセスがどのように機能しているかに依存すると思います。インメモリ DB をかなり簡単にスワップできる場合は、それができると思います。私の理解では、統合テストは可能な限り本番環境に近づける必要があるため、可能であれば本番環境で使用しているのと同じ DBMS を使用してください。
私がやっていることは、テストが実行されるたびに、prod DB の既知のバックアップからテスト DB にデータを復元することです。Process
テストを実行する前に、これを command-line/ 経由で再度呼び出すことができます。私の DB の場合、これはかなり小さなデータセットであり、テストに関連するテーブルのみを復元できるため、このオーバーヘッドは統合テストにはそれほど大きくありません。(ただし、モック リポジトリやメモリ内データを使用する可能性がある単体テストでは受け入れられません。)