2011-09-01 19 views
5

一般的なアドバイスは、データベースの移行を常にテストする必要がありますが、それを行う方法はよく秘密になっているようです;)FluentMigratorのマイグレーションの単体テストをテストするにはどうすればよいですか?

私が選んだフレームワークはFluentMigrationです。私は私がやりたいと思う何

は次のとおりです。N-1へ

  1. 移行データベース。
  2. データを保存します。
  3. データベースをNに移行してください。
  4. データを読み取り、失われていないことを確認してください。
  5. 他の関連する変更

を確認してくださいしかし、私は私のユニットテストからの移行を実行する方法を見つけ出すことはできません。

+0

これは非常に統合テストであり、単体テストではありません。あなたがデータベースを模擬するならば、テストはかなり無意味になるでしょう。しかしそれはちょっとしたことです;-)リチャードの答えは必要なものです。下位移行もテストしますか?上の移行がうまくいかない場合はすぐに気付くように、通常はバグを含んでいます。 –

+0

ユニットテストフレームワークを使用するたびに、私は「ユニットテスト」という言葉を使う傾向があります。私はこれが定義に合っていても、これを統合テストしたいとは思っていません。それは本当に統合とは関係ありません。しかし、私は同意します、これは軽微な意見です。 –

+0

マイグレーションをテストするのに良いポイント、btw。 –

答えて

2

は、あなたがする必要がありますあなたはMSTestをを使用している場合は、単に例

var migrator = System.Diagnostics.Process.Start("migrator.exe", "/connection \"Data Source=db\\db.sqlite;Version=3;\" /db sqlite /target your.migrations.dll"); 
migrator.WaitForExit(); 

についてProcess.Start

を使用してmigrate.exeのコマンドに支払うあなたの統合テストでの移行をキックオフするにはmigrator.exeが展開アイテムとして含まれていること、またはプロセスの起動時に.exeが存在する場所へのパスを指定していることを確認してください。

+0

私の意見では、配備アイテムを使用するのは悪い習慣です。しかし、MSTestを使用しなくても、.exeがbinフォルダにコピーされていることを確認する必要があります。またはパスを指定しますか? –

+0

xUnitなどを使用している場合は、migrator exeの完全なパス –