[英]Which way is better/proper to compare to objects?
我正在编写用于使用specflow测试REST服务的测试。 测试的主题是检查我从服务获得的列表是否包含正确的对象。
我在后台部分有示例数据,该数据在每次运行时都会放入数据库中,并且每次运行后都会被清理。 关键是我知道数据库中的确切数据和应该比较的对象是DTO类。
在测试中,我必须比较请求调用的结果(反序列化的JSON字符串到List<DTOObject>
),REST服务url和测试数据(填充的List<DTOObject>
)。 所以,我有两个List<DTOObject>
。 问题是哪种方法比较它们更好?
A,我编写了一个通用的比较器类(我不想在我的测试库和应用程序之间建立依赖关系),步骤是
B,
目前,我有两个想法。 我已经读过一些关于比较的文章,并且我不想使其变得比需要的更为复杂。 我的意思是,实现IComparable接口,覆盖GetHashCode方法。 另一方面,我不确定DTO类是否实现用于测试的接口会很好。
也许我没有读足够的书,或者我太接近这个问题了。 我想请您回顾一下我的两种可能的方法-我绝对不确定它们是否正确-如果您知道有关此问题的文章,请与我分享。 我不需要现有的解决方案-不熟练地使用他人的代码不是我的方式-我需要提示要去哪里。
文章:
谢谢您的帮助!
为了比较对象本身,您应该覆盖Equals()
方法。 如果在某个时间点您的对象可能被用作Dictionary或类似内容中的键的可能性很小,则也重写GetHashCode()
。
然后,您可以使用Enumerable.SequenceEqual()
检查两个列表的相等性。 除了在对象上实现Equals
,您还可以创建IEqualityComparer<DTOObject>
并将其传递给SequenceEqual
调用,但是我认为实现Equals
是更通用的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.