繁体   English   中英

在两个对象上的assertEquals()

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM