相关疑难解决方法(0)

如何在没有equals方法的情况下断言两个类的相等性?

假设我有一个没有equals()方法的类,没有源.我想在该类的两个实例上断言相等.

我可以做多个断言:

assertEquals(obj1.getFieldA(), obj2.getFieldA());
assertEquals(obj1.getFieldB(), obj2.getFieldB());
assertEquals(obj1.getFieldC(), obj2.getFieldC());
...
Run Code Online (Sandbox Code Playgroud)

我不喜欢这个解决方案,因为如果早期的断言失败,我就不会得到完全相等的图片.

我可以自己手动比较并跟踪结果:

String errorStr = "";
if(!obj1.getFieldA().equals(obj2.getFieldA())) {
    errorStr += "expected: " + obj1.getFieldA() + ", actual: " + obj2.getFieldA() + "\n";
}
if(!obj1.getFieldB().equals(obj2.getFieldB())) {
    errorStr += "expected: " + obj1.getFieldB() + ", actual: " + obj2.getFieldB() + "\n";
}
...
assertEquals("", errorStr);
Run Code Online (Sandbox Code Playgroud)

这给了我完全平等的图片,但是很笨重(我甚至没有考虑到可能的零问题).第三种选择是使用Comparator,但compareTo()不会告诉我哪些字段失败相等.

有没有更好的做法从对象获得我想要的东西,没有子类化和覆盖equals(ugh)?

java junit unit-testing

82
推荐指数
8
解决办法
7万
查看次数

标签 统计

java ×1

junit ×1

unit-testing ×1