[英]Why is MSDTC behaving inconsistently while unit-testing with mstest?
测试我的Nhibernate存储库时遇到一个奇怪的问题。
我有10个像下面这样的单元测试。 每次批量运行它们时,第一个失败,其余成功。 如果一个接一个地运行它们,它们都会失败。 如果在我的测试运行之前重新启动MSDTC,它有时会表现得像以前一样,并且有时所有测试都会成功。 我找不到一个为什么会这样的模式。
我希望事务回滚,以便为每个测试从一个干净的数据库开始,因此要进行事务处理。
由于以下错误,测试失败:
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();
}
问题似乎与既不使用_transactionScope.Complete()也不提交也不通过引发异常回滚的事务有关。
我也注意到一个奇怪的事情,测试通常会失败或无法通过“断言”功能(等于,不等于,断言存在等)成功运行或从测试中丢失。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.