[英]assertEquals() on two objects
当使用assertEquals()
比较两个对象时,是否要考虑内部结构,即。 对象的属性?
假设我有一个如下的A类:
public class A {
private int ID;
private String name;
private String address;
}
并假设所提供的对象(将与A
的对象进行比较)的属性的顺序不同,那么assertEquals()
做什么? 有一种健壮的方法可以做到这一点吗?
@JimGarrison是非常正确的-assertEquals assertEquals()
只会在对象上调用equals()
方法来确定相等性。
要回答您的问题,“ 是否有一种健壮的方法可以这样做? ”,如果由于某种原因您不能在类上正确实现equals()
方法,并且您想根据它们字段的值,请考虑使用EqualsBuilder的reflectEquals reflectionEquals()
方法 。 它相当健壮,并且允许您排除所需的任何字段。
要回答另一个问题,“ 假设提供的对象的属性顺序不同,那么assertEquals()会做什么? ”,它要做的就是在另一个实例上调用equals()
方法。 例如,如果调用assertEquals(a, b)
,则最终将调用a.equals(b)
。 但是,如果调用assertEquals(b, a)
,则最终将调用b.equals(a)
。
希望对您有所帮助。
Assert.assertEquals()
将使用类的equals()
方法。
如果您的类重写equals()
进行深度比较,则将使用该类。 如果不重写equals()
则仅基于身份相等性将获得Object#equals()
。
换句话说,您决定equals()
含义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.