【发布时间】: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