【问题标题】:JMock unable to mock a private methodJMock 无法模拟私有方法
【发布时间】:2023-03-18 11:24:01
【问题描述】:

我正在尝试通过模拟 JMock 中的类来编写代码来测试方法,该方法在内部调用了三个不同的方法(其中一个是私有方法)。我为所有三种内部方法设置了期望值。然后我调用方法,它正在测试中。测试用例失败,说它期望调用私有方法并且没有调用它。发生的事情是两个内部方法(使用默认访问说明符)被成功模拟,但私有方法没有被模拟,实际上控制到达导致问题的实际私有方法内部。当我将私有方法的访问说明符更改为默认访问时,一切正常,但我不想这样做。有人可以解释一下这种行为并让我知道如何解决这个问题

【问题讨论】:

  • 私有方法在做什么意味着您希望模拟它们?
  • 该方法中有一些业务逻辑,现在我更改了它的访问说明符以使其与 JMock 一起使用
  • 允许逻辑运行有什么害处?当有人想模拟该主题的一部分时,我倾向于认为您有两个(或更多)类可以相互逃避。

标签: java unit-testing testing jmock


【解决方案1】:

JMock 不能模拟私有方法,简单明了。 Mockito cannot mock private methods either。如果你真的想模拟私有方法,你需要使用PowerMock 框架。

【讨论】:

    【解决方案2】:

    您也可以使用 Jmockit。这是一个出色的库,可用于此用例。您可以使用的关键字:“去封装”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      相关资源
      最近更新 更多