gpt4 book ai didi

c# - 混合 NUnit 和 NMock2 匹配器时的模糊引用

转载 作者:太空宇宙 更新时间:2023-11-03 18:44:49 25 4
gpt4 key购买 nike

我们使用 NUnit (2.5.9) 和 NMock2 进行单元测试和模拟。但是,两者都具有紧密对应的匹配器语法。当我做的时候

using NUnit.Framework;
using NMock2;

然后是以下 NMock2 代码:

Expect.Once.On(database).Method("Create").
With(Has.Property("id", Is.EqualTo("012345678901")));

还有一个 NUnit 断言:

Assert.That(someValue, Is.EqualTo(54321));

然后 VS (2008) 会提示 'Is' 是 'NUnit.Framework.Is' 和 'NMock2.Is' 之间的模糊引用(对于 'Has' 也是如此)。 p>

有什么办法解决这个问题吗?无论如何,这两个匹配器似乎都具有相似的功能。用完整的命名空间为每个匹配器类添加前缀当然可行,但它会显着降低测试的可读性。

谷歌搜索这个问题根本找不到匹配项,所以我的软肋是我在做一些非常愚蠢的事情。

最佳答案

您可以避免使用 Nunit 流畅语法。

Assert.AreEqual(54321, someValue);

然后结合使用别名。

using NMock2;
using Is = NMock2.Is;
using Has = NMock2.Has;

这将强制您的应用程序采用这些类的 NMock 版本。如果您想访问 NUnit,则必须提供包括命名空间在内的全名。

保留两者的另一种选择是使用以下命名空间声明和别名。

using NUnit.Framework;
using Is = NUnit.Framework.Is;
using NMock2;
using WithValue = NMock2.Is;
using Has = NMock2.Has;

现在你可以使用这两种流畅的接口(interface),但是代码是这样的

Expect.Once.On(database).Method("Create").
With(Has.Property("id", WithValue.EqualTo("012345678901")));

Assert.That(someValue, Is.EqualTo(54321));

关于c# - 混合 NUnit 和 NMock2 匹配器时的模糊引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5376666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com