![](/img/trans.png)
[英]How can I take objects from the second set of objects which don't exist in the first set of objects in fast way?
[英]How can I get NUnit to be more specific about which fields don't match when comparing objects?
我有两个对象(一手制作是我的预期,一个来自数据库),我正在努力确保它们是平等的。 不是因为它们是相同的引用,而是它们中的数据匹配。
我正在使用Assert.AreEqual()
但只获得一般的错误消息,如。
Expected: <Namespace.ObjectFoo>
But was: <Namespace.ObjectFoo>
如何进一步钻取以显示哪些属性不匹配?
在Namespace.ObjectFoo类上添加.ToString()
重写,该类描述对象的内容。 <Namespace.ObjectFoo>
是System.Object
定义的.ToString()
实现的输出。
您可以重写Equals,以便Asser.AreEqual使用它。 或者逐个比较每个属性。
我假设你已经覆盖Equals /使类Equatable,所以即使实例不同,你也可以实际获得相等。 为什么不调试测试并查看Equals实现中的相等性失败?
让objectFoo实现icomparable并将比较逻辑放在CompareTo方法中,如果你想要更精细的粒度测试比较,那么只需为每个属性编写一个测试。
单元测试的核心概念之一是一次只测试一件事,如果你有两个复杂的对象,你应该比较每个属性的个性,除非你希望你的类可以比较。
不太确定如何将这两个对象的* content *与Assert.AreEqual()
。 我想你需要在你的mock
对象中引入一些Compare
方法,它迭代两个字段并累积,让我们在某些string
说出内容不匹配的字段。 您可以实现IComparable
,覆盖Equals
,实现自定义方法或其他任何方法。
在执行该Compare
方法之后,您将获得一个string
其中包含您想要的相关比较失败字段的数据报告(如果有)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.