gpt4 book ai didi

java - 一个单元应该如何测试 hashCode-equals 合约?

转载 作者:IT老高 更新时间:2023-10-28 11:53:51 29 4
gpt4 key购买 nike

简而言之,hashCode合约,根据Java的object.hashCode():

  1. 除非影响 equals() 的内容发生更改,否则哈希码不应更改
  2. equals() 表示哈希码是 ==

让我们假设主要对不可变数据对象感兴趣 - 它们的信息在构造后永远不会改变,因此假设 #1 成立。剩下#2:问题只是确认equals意味着哈希码==。

显然,我们无法测试所有可能的数据对象,除非该集合非常小。那么,编写可能捕获常见情况的单元测试的最佳方法是什么?

由于此类的实例是不可变的,因此构造此类对象的方法有限;如果可能,此单元测试应涵盖所有这些。在我的脑海中,入口点是子类的构造函数、反序列化和构造函数(应该可以归结为构造函数调用问题)。

[我将尝试通过研究来回答我自己的问题。来自其他 StackOverflowers 的输入是此过程中受欢迎的安全机制。]

[这可能适用于其他 OO 语言,所以我添加了该标签。]

最佳答案

EqualsVerifier是一个相对较新的开源项目,它在测试 equals 合约方面做得非常好。它没有 issues GSBase 的 EqualsTester 有。我肯定会推荐它。

关于java - 一个单元应该如何测试 hashCode-equals 合约?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/188311/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com