c# – 为什么MSDTC在使用mstest进行单元测试时表现不一致?
发布时间:2020-12-15 17:28:21 所属栏目:百科 来源:网络整理
导读:我在测试我的Nhibernate存储库时遇到了一个奇怪的问题. 我有10个单元测试,如下所示.每次在批处理中运行它们时,第一次失败,其余成功.如果一个接一个地运行它们都会失败.如果在我的testrun之前重新启动MSDTC,它有时会像以前一样运行,有时候所有测试都会成功.我
我在测试我的Nhibernate存储库时遇到了一个奇怪的问题.
我有10个单元测试,如下所示.每次在批处理中运行它们时,第一次失败,其余成功.如果一个接一个地运行它们都会失败.如果在我的testrun之前重新启动MSDTC,它有时会像以前一样运行,有时候所有测试都会成功.我找不到一个模式,为什么它表现得那样. 我希望事务回滚,以便为每个测试启动一个干净的DB,从而处理事务. 由于此错误,测试/测试失败:
我的测试看起来像这样: [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)成功运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |