Koi*_*oer 7 java testing junit equality equals
我只是想知道是否有最佳实践或常用方法来测试对象中的equals实现.我的意思是被覆盖的测试方法.
public boolean equals(Object o)
Run Code Online (Sandbox Code Playgroud)
我确实使用了这样的逻辑.(假设数字和名称必须等于获得真)
Dog d1 = new Dog(1,"Alvin");
Dog d2 = new Dog(2,"Alvin");
Assert.assertFalse(d1.equals(null));
Assert.assertFalse(d1.equals(d2));
d2.setId(1);
d2.setName("Kelvin");
Assert.assertFalse(d1.equals(d2));
d2.setName("Alvin");
Assert.assertTrue(d1.equals(d2));
Assert.assertTrue(d1.equals(d1));
Run Code Online (Sandbox Code Playgroud)
但是当有很多字段时,这个任务非常庞大而且很无聊,所以我的问题是,是否有任何框架,工具,选项,任何使这更容易的东西,并且可以证明方法已被正确覆盖.谢谢.
我知道覆盖方法equals取决于你需要的逻辑,但也是测试用例创建,所以寻找一种标准方法来测试方法,避免测试用例中的大代码,如果存在明显或任何建议你可能有.
查看重复问题的链接,我阅读了@user598656答案并建议使用MeanBeans(自动java bean测试器)
阅读文档我发现了这个功能。
5.2.7. 性质!意义!测试!算法! 属性显着性检验算法如下:
for each property in public getter/setter method pairs do
create instance of class under test, object x
create instance of class under test, object y
change property of y to contain a different value
if property is insignificant then
assert x.equals(y)
else
assert x.equals(y) is false
end if
end for
Run Code Online (Sandbox Code Playgroud)
这就是我一直在寻找的,答案是最后一个,但我认为这符合我的需求。