NUnit是否有返回布尔值的Assert方法?它们都返回void。我使用的是2.5.3版
谢谢
发布于 2010-03-10 05:32:36
Assert类的所有成员都是空的。对于每个void,如果断言不正确,就会抛出一个NUnit.Framework.AssertionException。
我想,如果没有抛出异常,捕获任何异常并返回false,那么您可以在这些空洞周围编写自己的包装器,返回true,但我不确定这会给您提供什么功能。
您能解释一下您试图实现的需要断言才能返回布尔值的目标吗?
发布于 2021-11-04 07:35:18
哇,十多年后我来到这里,寻找这个问题的答案。
我正在编写一个类来添加到我的测试助手中,它将在反序列化后执行“深度”等于、嵌套对象和数组。我想利用Nunit的Assert.Equals()。比较不同数值类型中包含的值比第一次听起来要难得多。有符号和无符号的整数,有不同的位大小,小数,浮点数,双精度数,字节,sbyte,甚至像IntPtr这样的奇数……即使这些类型彼此不兼容,Assert.Equals()也能很好地支持所有这些类型。
我已经合法地使用Nunit作为我的测试框架,所以我希望避免引入不同的equals比较方法,该方法可能具有与其他单元测试已经利用的行为不同的行为。
但是,我不希望这个断言抛出。我想在整个深度相等中列出所有的差异,然后我可能会决定抛出,但这与手头的问题无关。
当然,我可以很容易地围绕Assert.Equals()的每个相关事件包装一个try/catch,或者将它们替换为对单个包装方法的to调用;但我喜欢使用我的调试器遍历我的过程,我引入的抛出和重定向越少,它就越容易遵循。
从本质上讲,深度equals方法是递归的,所以已经有了一些跳跃,我不想添加更多。
:我想要一个更优雅的解决方案。
我通常使用他们的Assert.Equals(expected,actual)模式,但与我共事的许多开发人员更喜欢使用另一种Assert.That(actual,Is.EqualTo(expected))模式,因为它读起来更像是一个句子。
在对解析器进行了一些研究之后,我发现您可以独立于Assert.That()使用Is.EqualTo()约束,从而完全避免异常:
Is.EqualTo(expected).ApplyTo(actual).IsSuccess完全公开,我是在NUnit4.8中做这件事的,在写这篇文章的时候,它几乎已经过时了,但这也应该可以在.net5,核心,标准,单声道和任何其他.Net已经移植到的地方工作。
https://stackoverflow.com/questions/2388097
复制相似问题