首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混合NUnit和NMock2匹配器时的模糊引用

混合NUnit和NMock2匹配器时的模糊引用
EN

Stack Overflow用户
提问于 2011-03-21 10:56:55
回答 2查看 2K关注 0票数 1

我们使用NUnit (2.5.9)和NMock2进行单元测试和模拟。然而,这两种语法都具有紧密对应的匹配器语法。当我这么做

代码语言:javascript
复制
using NUnit.Framework;
using NMock2;

稍后,在下面的NMock2代码上:

代码语言:javascript
复制
Expect.Once.On(database).Method("Create").
  With(Has.Property("id", Is.EqualTo("012345678901")));

但也有一个NUnit断言:

代码语言:javascript
复制
Assert.That(someValue, Is.EqualTo(54321));

然后VS (2008)会抱怨说' is‘是'NUnit.Framework.Is’和‘Nmok2.is’之间的一个模糊的引用(对于‘Has’也是一样的)。

有办法绕过这件事吗?这两种匹配程序似乎都有类似的功能。当然,用完整的命名空间对每个matcher类进行前缀是有效的,但是它使测试的可读性大大降低。

谷歌对这个问题的搜索发现根本不匹配,所以我的下腹感觉是我在做一些非常愚蠢的事情。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-21 11:04:32

您可以避免使用Nunit fluent语法。

代码语言:javascript
复制
Assert.AreEqual(54321, someValue);

然后结合使用别名。

代码语言:javascript
复制
using NMock2;
using Is = NMock2.Is;
using Has = NMock2.Has;

这将迫使应用程序接受这些类的NMock版本。如果您想要访问NUnit名称,则必须给出包含名称空间的全名。

保留这两个名称空间的另一个选项是使用以下名称空间声明和别名。

代码语言:javascript
复制
using NUnit.Framework;
using Is = NUnit.Framework.Is;
using NMock2;
using WithValue = NMock2.Is;
using Has = NMock2.Has;

现在您可以使用这两种fluent接口,但是代码会读取

代码语言:javascript
复制
Expect.Once.On(database).Method("Create").
  With(Has.Property("id", WithValue.EqualTo("012345678901")));

Assert.That(someValue, Is.EqualTo(54321));
票数 3
EN

Stack Overflow用户

发布于 2012-01-05 22:17:44

有趣的是,NUnit还公开了一个名为Iz的小类,您可以使用它来避免与NMock2的命名冲突。因此,例如:而不是:

代码语言:javascript
复制
Assert.That(someValue, Is.EqualTo(54321))

你可以写

代码语言:javascript
复制
Assert.That(someValue, Iz.EqualTo(54321))

也许不是最干净的,但它起作用;)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5376666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档