私もこれにかなり新しいですので、塩ひとつまみと答えを取る、それ以外誰もが答えているように...
は、実際にサーバ(最初のスタートを実行する方法はあります...
コマンドラインから呼び出すことのできるIIS Expressを使用できます。あなたはSystem.Diagnostics.Process
経由の呼び出しで、テストが実行される前にあなたのウェブサイトをスピンアップすることができます(これはSpecFlowの[BeforeTestRun]
属性で行うことができます)。
実際のコマンドラインは、たとえば次のようなものです。
iisexpress.exe /path:c:\iisexpress\<your-site-published-to-filepath> /port:<anyport> /clr:v2.0
...と特別な「テスト」DB(例えばメモリ内RavenDB)は、各シナリオの後に空に(とバックグラウンドの間に充填された)サーバを利用します。
特別なテストDBを使用するには、データアクセスの仕方によって異なります。メモリ内のDBをかなり簡単にスワップすることができれば、それを実行できると思います。私の理解では、統合テストはできるだけプロダクション環境に近いものでなければならないが、可能であれば、プロダクション環境で使用しているものと同じDBMSを使用することが望ましい。
私がやっていることは、テストを実行するたびにprod DBの既知のバックアップからテストDBにデータを復元することだけです。テストを実行する前に、私は再びコマンドライン/ Process
でこれを呼び出すことができます。私のDBではかなり小さいデータセットであり、テストに関連するテーブルだけを復元することができるので、このオーバーヘッドは統合テストにはあまりにも厳しいものではありません。 (単体テストでは、モックリポジトリやメモリ内のデータがあるかもしれません。)
出典
2012-06-07 10:26:26
ngm
あなたは何をやったのですか?私もこの問題を抱えています。 – levininja