首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >断言哪个返回bool?

断言哪个返回bool?
EN

Stack Overflow用户
提问于 2010-03-06 00:07:46
回答 2查看 975关注 0票数 3

NUnit是否有返回布尔值的Assert方法?它们都返回void。我使用的是2.5.3版

谢谢

EN

回答 2

Stack Overflow用户

发布于 2010-03-10 05:32:36

Assert类的所有成员都是空的。对于每个void,如果断言不正确,就会抛出一个NUnit.Framework.AssertionException。

我想,如果没有抛出异常,捕获任何异常并返回false,那么您可以在这些空洞周围编写自己的包装器,返回true,但我不确定这会给您提供什么功能。

您能解释一下您试图实现的需要断言才能返回布尔值的目标吗?

票数 2
EN

Stack Overflow用户

发布于 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()约束,从而完全避免异常:

代码语言:javascript
复制
Is.EqualTo(expected).ApplyTo(actual).IsSuccess

完全公开,我是在NUnit4.8中做这件事的,在写这篇文章的时候,它几乎已经过时了,但这也应该可以在.net5,核心,标准,单声道和任何其他.Net已经移植到的地方工作。

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

https://stackoverflow.com/questions/2388097

复制
相关文章

相似问题

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