java - 我如何通过反射(reflection)性地比较 POJO 的领域

标签 java unit-testing junit testng mockito

我基本上是在寻找一个单元测试框架,我可以用它来比较不覆盖 equals 和 hascode 方法的 POJO。我查看了 JUnit、Test NG 和 Mockito,但它们似乎无法解决问题。

例如考虑下面的代码:

public class CarBean { 

    private String brand;
    private String color;

    public CarBean (){
    }

    public CarBean (String brand, String color){
        this.brand= brand;
        this.color= color;
    }

    /**
     * @return the brand
     */
    public String getBrand() {
        return brand;
    }

    /**
     * @param the brand to set
     */
    public void setBrand(String brand) {
        this.brand= brand;
    }

    /**
     * @return the color
     */
    public String getColor() {
        return color;
    }

    /**
     * @param the color to set
     */
    public void setColor(String color) {
        this.color= color;
    }
}

POJO CarBean 代表真实世界的汽车。它有两个参数,品牌和颜色。现在,假设您有两个汽车对象,如下所示:

CarBean car1 = new CarBean("Ford","Black");
CarBean car2 = new CarBean("Ford","Black");

两个对象具有相同的参数值。但是当你使用 equals 比较它时,它返回 false :

car1.equals(car2); // This returns false

现在我需要对返回 CarBean 对象的方法进行单元测试。在这种情况下,我要么需要一个一个地比较 carbean 属性,要么需要实现 equals() 和 hashcode() 方法。

所以我的问题是 - 是否已经有可以处理此问题的单元测试框架?

最佳答案

像下面这样重写 pojo 类中的 toString() 方法

@Override
public String toString() {
    return "brand: " + this.brand + ",color: " + this.color;
}


car1.toString().equals(car2.toString()); //It will return true if both objects has same values

如果你有大量的参数,我会建议你使用下面的代码

public static boolean comparePOJO(Object obj1, Object obj2) {
    return new Gson().toJson(obj1).equals(new Gson().toJson(obj2));
}
comparePOJO(car1,car2); //It will return true

关于java - 我如何通过反射(reflection)性地比较 POJO 的领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27326570/

相关文章:

java - Java VM 如何处理 MT 上下文中的缓存行和内存对齐?

java - 某些字段的 jackson JSON 自定义序列化

python - 将 python 脚本参数传递给测试模块

java - 如何采用 TDD 并确保遵守?

java - 使用mockito测试列表<Map>

java - 网站移动兼容性

java - ZXING Android嵌入式IntentIntegrator的使用

javascript - Siesta Test Runner 给出 'store' 未定义错误

java - 如何知道我的 Jenkins 服务器使用哪个 Hudson 版本?

java - Mockito 模拟测试嵌套函数调用