我在测试我的Nhibernate存储库时遇到了一个奇怪的问题.
我有10个单元测试,如下所示.每次在批处理中运行它们时,第一次失败,其余成功.如果一个接一个地运行它们都会失败.如果在我的testrun之前重新启动MSDTC,它有时会像以前一样运行,有时候所有测试都会成功.我找不到一个模式,为什么它表现得那样.
我希望事务回滚,以便为每个测试启动一个干净的DB,从而处理事务.
由于此错误,测试/测试失败:
System.Data.SqlClient.SqlException: MSDTC on server ‘MYCOMPUTERNAME\SQLEXPRESS’ is unavailable.
我的测试看起来像这样:
[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();
}
最佳答案 问题似乎与使用_transactionScope.Complete()未提交的事务或通过抛出异常回滚.
另外我注意到一个奇怪的事情,测试通常失败或通过测试中缺少的“断言”函数(等于,不等于,存在等来自assert)成功运行. 🙂