简而言之,根据Java的object.hashCode(),hashCode契约:
- 除非影响equals()的内容发生变化,否则哈希码不应更改
- equals()表示哈希码==
让我们假设主要是对不可变数据对象感兴趣-它们的信息在构造之后就不会改变,因此假定#1保持不变。留下#2:问题仅仅是确认是否等于隐含哈希码==之一。
显然,除非该集合很小,否则我们无法测试每个可能的数据对象。那么,编写可能会遇到常见情况的单元测试的最佳方法是什么?
由于此类的实例是不可变的,因此构造此类对象的方法有限。如果可能,此单元测试应涵盖所有这些内容。在我头顶上,切入点是子类的构造函数,反序列化和构造函数(应简化为构造函数调用问题)。
[我将尝试通过研究回答自己的问题。来自其他StackOverflowers的输入是此过程中受欢迎的安全机制。]
[这可能适用于其他OO语言,因此我要添加该标签。]