【问题标题】:Mocking super method call using easymock使用 easymock 模拟超级方法调用
【发布时间】:2017-03-22 13:07:06
【问题描述】:

是否可以模拟超类方法调用?我看过很多帖子,但它们要么无关紧要,要么使用不同的测试框架。

easymock 可以吗?

如果不是,还有什么其他框架可以让我这样做?

【问题讨论】:

  • 如果没有,我如何使用其他框架进行模拟?

标签: junit4 easymock


【解决方案1】:

不,不是。而且我不认为它适用于其他框架。这需要对基类进行字节码操作。所以也许是 Powermock,但我不确定。

但是,20 年来我从未需要这样做。一般来说,这意味着模板模式的错误实现。

所以而不是类似的东西

public void foo() {
    // do stuff
    super.foo(); // don't forget to call super
    // do some other stuff
}

你最好这样做

基类:

public void foo() {
    doBeforeFoo();
    // ... stuff that is in super
    doAfterFoo();
}

然后你填补子类的漏洞

【讨论】:

  • 感谢回答@Henr,y,您建议的方式也是正确的,但如果可能的话,我不应该触碰我正在考虑的代码。
  • 我尝试使用 easymock 的 createmock 构建器方法,并且在我能够将相同的参数放入期望调用中的情况下取得了进展,而调用方法正在传递.. 意味着当参数匹配时它被模拟.. 和该规则还说对于参数化模拟..现在我的问题是我可以使用示例代码来做到这一点,但是当与 Project m 集成时无法获得相同的参数..所以它给出了缺少的行为定义异常,就我而言明白。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多