小编Ed *_*ner的帖子

EasyMock - 改变equals()和其他Object方法的行为

EasyMock文档很清楚

对于使用EasyMock创建的模拟对象,无法更改三个对象方法equals(),hashCode()和toString()的行为,即使它们是创建模拟对象的接口的一部分.

我正在尝试测试的代码使用equals()来比较我的模拟对象.我想做点什么

expect(mock.equals(obj)).andReturn(false);
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到一个IllegalStateException.鉴于文档说的内容,这并不奇怪.

有没有人对替代方法有任何建议?还有另一种方法可以控制模拟对象在调用equals()时返回的内容吗?我想我可以创建一个覆盖equals()的子类

class FooImplOverrideEquals extends FooImpl {
    public boolean equals;
    public boolean equals(Object obj) { return equals; }
}
FooImplOverrideEquals mock = createMock(FooImplOverrideEquals.class);
mock.equals = false; // instead of expect(mock.equals(obj)).andReturn(false);
Run Code Online (Sandbox Code Playgroud)

但这似乎不够优雅.我觉得我缺少一些重要的东西(比如EasyMock不允许你覆盖那些对象方法的原因).有更好的解决方案吗?

java easymock equals

6
推荐指数
1
解决办法
5556
查看次数

标签 统计

easymock ×1

equals ×1

java ×1