2012-08-10 15 views
6

現在、私はVisual Studio 2012 RCとSQL Server 2012 RTMを使用しています。各テスト実行時にデータベースを再展開、再作成する方法

各テストの実行時にテストデータベースを再デプロイ/再作成する方法を知りたいと思います。

Visual Studio 2012のテンプレートを使用して、データベース用のSQL Serverデータベースプロジェクトを作成しました。

は、実際に私は私の心の中で得たアイデアについては非常にわからないんだけど、.testsettingsファイルがセットアップとクリーンアップスクリプトを持っています。これは道のりですか?たとえば、データベースプロジェクトを読み込んだPowerShellスクリプトがスクリプトを生成し、それをデータベースに対して実行しますか?

私はそれを行う良い方法があると思います。それはすぐに使える解決策であるべきですが、私はそれを無視し、Googleは正しい解決策を見つけるのに役立ちません。

+0

SQL ServerまたはLocalDBに対して展開してテストしますか?毎回再構築している場合は、LocalDBに対してテストすることをお勧めします。また、TFSなどをビルドエージェントとして使用していますか? 「すべてのテストを実行する」とは、すべてのテストを実行するか、何らかの自動化を実行することを手動で選択することです(つまり、ビルド、CI、ゲーテッドチェックなど)。 –

+0

@ aclear16 SQL Serverに対して展開したい。今のところ、TFSビルドではなく、順序付けられたテストを手動で実行するためのものです。 –

答えて

3

前述のとおり、VS 2012の.Local.testsettings>セットアップとクリーンアップスクリプトを使用して、SQL Serverデータベースを作成/解体することができます。あなたはSSDTプロジェクトを使用しているので、.dacpac(だけではなく、T-SQLスクリプト)をPowerShellを使用することもできますスクリプトの

enter image description here

。いくつかのコード例にはlinkがあります。特に、 'Deploy-Dac'コマンドを見てください。

SSDTによって作成されたデータベースプロジェクトの出力として.dacpacsに慣れていない場合は、linkを参照してください。

+0

ありがとう、私はそれを試してみましょう。あなたの指示を確認しましょう:) –

+0

PowerShellスクリプトをセットアップスクリプトとクリーンアップスクリプトとして直接起動できますか? –

+0

例では、aclear16のLocalDBのアプローチについてどう思いますか(質問自体の彼のコメントを参照)。 –

2

最速のソリューションは、ハックのビットが本当に簡単です。デバッグタブのDBプロジェクトプロパティを「常に再作成されたDB」に設定することができます。次に、2回のクリックでテストし、デバッグ/ビルドしてから、すべてのテストを実行します。あなたがテストを実行するには、localDB上に新しくビルドされたDBを用意する必要があります。また、あなたが好きに(再びDBは、プロパティを投影し)、あなたは.dacpacに、または既存のSQL DBまたはどこに展開することができ、デバッグDBのターゲットを変更することができます。これは2つのステップでテストすることを意味し、ビルドが長い場合は迷惑になるかもしれませんが、それは機能します。それ以外の場合、私はスクリプトがあなたの唯一の選択だと信じています。

2

編集:これは一般的なSQL Serverの方法で問題に答えることはできませんが、簡単なEntity Frameworkのアプローチは次のとおりです。DbContext.Databaseを使用してデータベースを正しく作成し、 .CreateIfNotExists()およびDbContext.Database.Delete()メソッドは、テストのセットアップおよびクリーンアップ段階で使用します。

+0

これは、EFを使用しているときです。 –

+0

私の悪い... whoops。 – CokoBWare

+0

実際、将来の訪問者にこの情報を追加すると便利です! +1;) –

関連する問題