Java 如何在单元测试中设置固定hashCode值

Java 如何在单元测试中设置固定hashCode值,java,unit-testing,junit4,Java,Unit Testing,Junit4,当我按照我们正在使用的多重映射的顺序为一个bug编写一个单元测试时,我正在寻找一种在单元测试中“注入”hashCode修复的方法 是否有任何方法可以在不更改原始类的情况下重写默认的-hashCode()-值 提前谢谢 实现hashcode的类应实现一个接口,添加到multimap的对象应属于该接口。在单元测试中,您创建了一个新类,可以在其中设置所需的hashcode返回值。然后将这些testobjects添加到multimap MultiMap<IMyObjects> multima

当我按照我们正在使用的多重映射的顺序为一个bug编写一个单元测试时,我正在寻找一种在单元测试中“注入”hashCode修复的方法

是否有任何方法可以在不更改原始类的情况下重写默认的-hashCode()-值


提前谢谢

实现hashcode的类应实现一个接口,添加到multimap的对象应属于该接口。在单元测试中,您创建了一个新类,可以在其中设置所需的hashcode返回值。然后将这些testobjects添加到multimap

MultiMap<IMyObjects> multimap;


class MyTestObjects implements IMyObjects {
private int hashCodeToUse = 42;

public int hashCode() {
  return hashCodeToUse;
}

// TODO write setter for hashCodetoUse
}

public void testHashCode() {
  // TODO init multipam
  MyTestObject obj1 = new MyTestObject();
  obj1.setHashCodeToUse(234);
  multimap.put(obj1);
}
MultiMap-MultiMap;
类MyTestObjects实现IMYObject{
私有int hashcodeouse=42;
公共int hashCode(){
返回hashcodeouse;
}
//HashCodeUse的TODO写入设置程序
}
public void testHashCode(){
//TODO初始化多路径
MyTestObject obj1=新的MyTestObject();
obj1.sethashcodeouse(234);
多映射put(obj1);
}

你试过看Powermock吗?也许你可以在
测试下扩展你的类,重写hashCode方法,并在你的测试中使用新类萨扬·钱德兰:谢谢你的想法。我要试试看!创建重写GetHashCode方法的派生类。声明任何构造函数并调用等价的基()。使用这个类进行测试。我认为这是正确的方向,我只需要使它适应我们的项目结构。谢谢