java - Junit of equals 方法

标签 java testing junit equals equality

我只想知道是否有最佳实践或通用方法来测试对象中的 equals 实现。我的意思是已被覆盖的测试方法。

public boolean equals(Object o)

我确实使用了这样的逻辑。 (假设number和name需要相等才能获得true)

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));

但是当有很多字段时,这个任务就非常大而且无聊,所以我的问题是是否有任何框架、工具、选项,任何可以使这更容易并且可以证明该方法已被正确覆盖的东西。谢谢。

我知道覆盖方法等于取决于您需要的逻辑,但测试用例的创建也是如此,因此寻找一种标准方法来测试该方法,避免在测试用例中使用大量代码,如果存在明显或任何建议你可能有。

最佳答案

查看重复问题的链接,我阅读了@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 

这是我一直在寻找的答案,答案是最后一个,但我认为这符合我的需要。

关于java - Junit of equals 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21805969/

相关文章:

java - 如何使用 iTextPDF 创建段落?

visual-studio-2010 - 如何在 WebTest VS2010 中绑定(bind)提取的参数

java - 测试 Controller 方法时出现 NullpointerException

ruby-on-rails - 我如何断言 Rails 集成测试中没有路由匹配?

java - Jenkins:有没有可以远程查看测试报告的API?

java - 在 JUnit 3 中,测试共享 Spring 容器吗?

java - 不满意的依赖异常 : Requested bean is currently in creation unresolvable circular reference

java - JDK8调用方法时出现com.sun.jdi.InvocationException

java - 使用 Spring 工厂方法连接 ExecutorService

java - Spring Data JPA - 转义重音法语字符(é,à,è,û..)