在验证中重用NUnit的IConstraint

时间:2014-07-17 14:46:58

标签: c# validation nunit

NUnit有一个IConstraint接口(documentation herecode here)。在我看来,在我的核心项目中重用这种类型以进行验证是有道理的。

我还没有认识到不可预知的副作用吗?您会在核心项目中重复使用IConstraint类型吗?为什么/为什么不呢?

1 个答案:

答案 0 :(得分:0)

这是一个基于意见的问题。除此之外,我还有两个问题。

首先,您可以编写类似Assert.That(foo, Is.EqualTo(bar))的内容,内部调用EqualConstraint。要让自定义约束像这样使用,你必须超载" Is,因此您可以拥有Assert.That(foo, Is.AsGoodAs(bar))(其中AsGoodAs是您的自定义约束调用)。有关详细信息,请参阅NUnit's Custom Constraints documentation。有了这个,你将有两个名为Is的类(你的和NUnit一个),你也可以通过派生类型调用默认的静态方法,如EqualTo。 Resharper会警告你这件事。

其次,编写智能断言失败文本(如expected "this", but was "that")可能有点难以理解。你肯定会花一些时间在这上面,直到你得到你想要的东西。当然,这取决于您对漂亮的文本的个人感受。