NUnit有一个IConstraint接口(documentation here和code here)。在我看来,在我的核心项目中重用这种类型以进行验证是有道理的。
我还没有认识到不可预知的副作用吗?您会在核心项目中重复使用IConstraint类型吗?为什么/为什么不呢?
答案 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"
)可能有点难以理解。你肯定会花一些时间在这上面,直到你得到你想要的东西。当然,这取决于您对漂亮的文本的个人感受。