【问题标题】:How to set fixed hashCode-Value in Unit-Test如何在单元测试中设置固定的 hashCode-Value
【发布时间】:2013-09-30 12:48:07
【问题描述】:

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

有什么方法可以在不改变原始类的情况下覆盖 default-hashCode()-value?

提前致谢!

【问题讨论】:

  • 你试过看 Powermock 吗?
  • 也许你可以在test下扩展你的类,并覆盖hashCode方法,并在你的测试中使用新类
  • Sajan Chandran:谢谢你的想法。我试试看!
  • 创建一个覆盖 GetHashCode 方法的派生类。声明任何构造函数并调用等效的 base()。使用此类进行测试。

标签: java unit-testing junit4


【解决方案1】:

实现哈希码的类应该实现一个接口,添加到多重映射的对象应该是那个接口。在单元测试中,您创建一个新类,您可以在其中设置所需的哈希码返回值。然后将这些测试对象添加到多图。

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

【讨论】:

  • 我认为这是正确的方向,我只需要适应我们的项目结构。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 2021-01-29
  • 2012-03-26
  • 2016-11-03
相关资源
最近更新 更多