【问题标题】:IDE stopping at thrown AssertionException, rather than failing the test. (MSTestExtensions culprit?)IDE 在抛出 AssertionException 时停止,而不是测试失败。 (MSTestExtensions 罪魁祸首?)
【发布时间】:2011-04-24 08:02:58
【问题描述】:

我在 MSTest 项目中使用 NUnit 断言,如下所示(注意: 这应该没关系,请参阅 cmets 对 Dave Falkner 的回答):

using Microsoft.VisualStudio.TestTools.UnitTesting;
using MSTestExtensions;
using Assert = NUnit.Framework.Assert;
using Is = NUnit.Framework.Is;

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

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

Assert.That(actualPartNumbers, Is.EquivalentTo(expectedPartNumbers));

因此,IDE 会在抛出的异常处停止,而不是使测试失败。有时这不会发生,测试会正常失败。但在大多数情况下,IDE 会在抛出的异常处停止。有什么想法吗?

仅供参考: 我正在使用 MSTestExtensions 以便在每次测试后进行数据库回滚([TestTransaction] 属性)。这类似于 MbUnit 的回滚功能。我用 NUnit 覆盖 MSTest 的断言,因为我更喜欢流利的风格。最后,我正在使用 MSTest,因为我遇到了 NUnit 问题。特别是使用 Microsoft Moles 和conflicts with third party references that use log4net。我正在尽力设置单元/集成测试,以便在我切换时能够在任一框架中运行。但目前 MSTest 似乎是最省事的,而且在 IDE 中的集成非常好。

【问题讨论】:

    标签: unit-testing nunit mstest integration-testing unhandled-exception


    【解决方案1】:

    这可能只是您用于启动测试的组合键的问题:ctrl+R、ctrl+T 与 ctrl+R、T?

    http://stevesmithblog.com/blog/run-mstest-without-breaking-on-exceptions-in-vs2010/

    【讨论】:

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