java - 如何对 hashCode() 进行单元测试?

标签 java unit-testing junit hashcode

如何测试 unit testing 中的 hashCode() 函数?

public int hashCode(){
    int result = 17 + hashDouble(re);
    result = 31 * result + hashDouble(im);
    return result;
}

最佳答案

每当我重写 equals 和 hash 代码时,我都会按照 Joshua Bloch 在“Effective Java”第 3 章中的建议编写单元测试。我确保 equals 和 hash 代码是自反的、对称的和传递的。我还确保“不等于”适用于所有数据成员。

当我检查对 equals 的调用时,我还确保 hashCode 的行为符合其应有的行为。像这样:

@Test
public void testEquals_Symmetric() {
    Person x = new Person("Foo Bar");  // equals and hashCode check name field value
    Person y = new Person("Foo Bar");
    Assert.assertTrue(x.equals(y) && y.equals(x));
    Assert.assertTrue(x.hashCode() == y.hashCode());
}

关于java - 如何对 hashCode() 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449728/

相关文章:

java - 使用 Eclipse 执行 JUnit 时出现内部错误

java - hadoop倒排索引计数

java - 使用 Jena 迭代 RDF

unit-testing - 当您进行单元测试时,断言是多余的吗?

java - @Nonnull 和 Objects.requireNonNull 有什么区别

eclipse - Eclipse 中代理背后的 Web 服务单元测试失败

PHPUnit 模拟抛出不兼容的声明错误

java - 多个包裹对象中的反射

java - 如何重构方法以使其更易于测试

java - 使用 hsql hibernate 数据源隔离 Junit 测试