【问题标题】:Use JMockit to test the concrete methods of an abstract class使用 JMockit 测试抽象类的具体方法
【发布时间】:2013-05-20 16:56:36
【问题描述】:

我有一个定义具体和抽象方法的抽象基类。我想知道是否有办法使用 JMockit 来模拟这种类型,以便我可以声明对抽象方法的期望并测试具体方法的实现。

显然,我可以在不使用任何模拟框架的情况下做到这一点,只需在我的测试中定义抽象框架的子类。然后我可以重写抽象方法以返回我需要的任何东西。我只是想知道是否有一种更巧妙、更黑的 JMockit 方法可以做到这一点。

【问题讨论】:

  • 我曾想过使用MockUp,但它只适用于接口......最简单的可能是创建一个基本实现,它只返回 0 / false / null / 对所有抽象方法都不做任何事情.
  • MockUp 可用于模拟任何类。您不能做的是在模拟类中使用 @Mock 方法来代替 abstract 方法。

标签: java unit-testing mocking jmockit


【解决方案1】:

在抽象类上使用@Mocked 并记录/验证对其抽象方法的期望。如果要在模拟类中执行非抽象方法,则通过将 JMockit 创建的模拟实例传递给 Expectations(Object...)NonStrictExpectations(Object...) 构造函数来应用部分模拟。

【讨论】:

  • 这对我不起作用。在 1.39 中,我使用 Expectiations(instance) ,其中 instance 是 @Mocked 字段。在 Expectations 块之后调用 instance.someMethod 会导致 NPE。如果我只写Expectation(),那么基类方法都是mock的,不是部分mock——正如所料。
猜你喜欢
  • 2018-08-12
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多