Unit testing IDE在抛出AssertionException时停止,而不是测试失败。(MSTestExtensions罪魁祸首?)

Unit testing IDE在抛出AssertionException时停止,而不是测试失败。(MSTestExtensions罪魁祸首?),unit-testing,nunit,mstest,integration-testing,unhandled-exception,Unit Testing,Nunit,Mstest,Integration Testing,Unhandled Exception,我在MSTest项目中使用NUnit断言,如下所示(注意:这不重要,请参见对Dave Falkner答案的评论): 这在我的单元测试中非常有效,但是在我的集成测试中我遇到了一些麻烦。我认为这可能是由于MSTestExtensions,因为我的单元测试没有使用它。此外,如果我注释掉MSTestExtensions using语句、类上的inherit MSTestExtensionsTestFixture语句以及[TestTransaction]属性,则没有这个问题。将using语句添加回不会导致

我在MSTest项目中使用NUnit断言,如下所示(注意:这不重要,请参见对Dave Falkner答案的评论):


这在我的单元测试中非常有效,但是在我的集成测试中我遇到了一些麻烦。我认为这可能是由于MSTestExtensions,因为我的单元测试没有使用它。此外,如果我注释掉MSTestExtensions using语句、类上的inherit MSTestExtensionsTestFixture语句以及
[TestTransaction]
属性,则没有这个问题。将using语句添加回不会导致问题。添加[TestTransaction]属性不会导致问题。一旦我从测试类上的MSTestExtensionsTestFixture继承,问题就出现了

基本上,问题是当我在失败的情况下执行以下代码时(例如actualPartNumbers列表包含两个部分,而预期列表只包含一个部分),AssertionException将不被MSTest处理

Assert.That(actualPartNumbers, Is.EquivalentTo(expectedPartNumbers));
因此IDE在抛出异常时停止,而不是测试失败。有时这种情况不会发生,测试通常会失败。但在大多数情况下,IDE在抛出异常时停止。有什么想法吗

供参考:
我正在使用MSTestExtensions,以便在每次测试之后可以执行数据库回滚(
[TestTransaction]
属性)。这类似于MbUnit的回滚特性。我用NUnit替代MSTest的断言,因为我更喜欢流畅的风格。最后,我使用MSTest是因为我对NUnit有问题。尤其是微软的Moles和。我正在尽最大努力设置单元/集成测试,以便在切换时能够在任一框架中运行。但是现在MSTest似乎是最简单的,并且IDE中的集成非常好。

这可能只是一个启动测试时使用的组合键的问题:ctrl+R,ctrl+T vs ctrl+R,T


Ctrl+R then T允许我很好地运行测试(就像在运行测试时通过右键单击测试上下文来运行测试一样),否则它将在异常时停止。Cntrl+R+T确实会在异常时停止。然而,当我将测试项目设置为启动项目并按下F5时,我也遇到了问题。我希望能够一次运行所有测试,而不是一次运行一个。有没有一种方法可以在整个测试套件上执行ctrl+R然后执行t-like操作?如果我没有从MSTestExtensionFixture继承,ctrl+R+t也不会在异常情况下停止。因此这看起来仍然像是MSTestExtension的问题。此外,如果我注释掉将Assert和Is对象映射到NUnit的代码(因此使用MSTest的Assert),然后将Assert更改为Assert.Equals(1,2),然后按Ctrl+R+T和F5,问题仍然存在。因此,使用NUnit断言似乎也没有问题,因为它也会影响MSTest断言。同样,如果我没有从MSTestExtension继承,我就没有这个问题。我刚刚意识到,如果我按Ctrl+R,然后在代码文件的顶部(即不在类中)按t,我可以运行整个测试套件,而不会出现这个问题。谢谢你的解决方案。我仍然想知道为什么会发生这种情况,或者有一个解决方案。但再次感谢你。我不知道这些捷径。
Assert.That(actualPartNumbers, Is.EquivalentTo(expectedPartNumbers));