繁体   English   中英

为什么在使用mstest进行单元测试时,MSDTC的行为不一致?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM