Nhibernate リポジトリのテスト中に奇妙な問題が発生しました。
以下のような10個の単体テストがあります。それらをバッチで実行するたびに、最初は失敗し、残りは成功します。それらを1つずつ実行すると、すべて失敗します。テスト実行の前に MSDTC を再起動すると、以前のように動作する場合があり、すべてのテストが成功する場合があります。なぜそのように振る舞うかのパターンが見つかりません。
トランザクションをロールバックして、すべてのテストでクリーンな DB から開始するようにしたいので、トランザクションを破棄します。
次のエラーが原因で、テストが失敗しています:
System.Data.SqlClient.SqlException: サーバー 'MYCOMPUTERNAME\SQLEXPRESS' の MSDTC は使用できません。
私のテストは次のようになります。
[TestInitialize]
public void MyTestInitialize()
{
_transactionScope = new TransactionScope();
}
[TestCleanup]
public void MyTestCleanup()
{
if (_transactionScope != null)
{
_transactionScope.Dispose();
_transactionScope = null;
}
}
[TestMethod]
[TestCategory("RepositoryTests")]
public void RepositoryCanSaveAProduct()
{
var platform = ProductObjectMother.CreatePlatform("100010", "Supplier 10");
var mainsegment = ProductObjectMother.CreateMainSegment("123");
var application = ProductObjectMother.CreateApplication("Foo");
var productfamily = ProductObjectMother.CreateProductFamily("X99");
Engine i = ProductObjectMother.CreateEngine(platform, productfamily, application, mainsegment);
var repository = new ProductRepository();
repository.Save(i);
repository.Flush();
}