【发布时间】:2010-11-29 18:11:53
【问题描述】:
如何在测试中根据字段值“深入”比较两个未实现 equals 方法的对象?
原始问题(因缺乏精确性而关闭,因此不符合 SO 标准),保留用于文档目的:
我正在尝试为一个大型项目中的各种clone() 操作编写单元测试,我想知道某处是否有一个现有的类能够获取两个相同类型的对象,做一个深入的比较,并说出它们是否相同?
【问题讨论】:
-
这个类如何知道在对象图的某个点它是否可以接受相同的对象,或者只能接受相同的引用?
-
理想情况下,它会足够可配置:) 我正在寻找自动的东西,以便如果添加(而不是克隆)新字段,测试可以识别它们。
-
我想说的是,无论如何您都需要配置(即实施)比较。那么为什么不在你的类中重写 equals 方法并使用它呢?
-
如果 equals 对大型复杂对象返回 false,你从哪里开始?最好将对象转换为多行字符串并进行字符串比较。然后你可以准确地看到两个对象不同的地方。 IntelliJ 会弹出一个“更改”比较窗口,帮助查找两个结果之间的多个更改,即它理解 assertEquals(string1, string2) 的输出并为您提供一个比较窗口。
-
这里有一些非常好的答案,除了公认的,似乎已经被埋没了
标签: java comparison equals