最初にEF4.1コードを使用してユニットテストを実行しようとしています。ライブデータベース(SQL Server)と単体テストDB(SQL CE)があります。EF、SQL CE 4.0、およびトランザクションサポートと戦った(そして負けた)後、テストを実行する最も簡単な方法は次のとおりであると判断しました。
- データベースを作成する
- テストを実行する
- データベースを削除
- すすぎ、繰り返します
[Setup]関数と[TearDown]関数があります。
[SetUp]
public void Init()
{
System.Data.Entity.Database.SetInitializer(new MyTestContextInitializer());
_dbContext = ContainerFactory.Container.GetInstance<IContext>();
_testConnection = _dbContext.ConnectionString;
}
[TearDown]
public void Cleanup()
{
_dbContext.Dispose();
System.Data.Entity.Database.Delete(_testConnection);
}
問題は、System.Data.Entity.Database.SetInitializerが最初のテスト後にMyTestContextInitializerを呼び出さないことです。
したがって、2番目のテストは次のように失敗します。
System.Data.EntityException:基になるプロバイダーがOpenで失敗しました。
----> System.Data.SqlServerCe.SqlCeException:データベースファイルが見つかりません。データベースへのパスを確認してください
任意のポインタのTIA