Jmock-如何模拟静态方法

mav*_*rik 4 java testing junit jmock

可能重复:
jmock模拟静态方法

我正在研究使用XX类的静态方法的旧式单元测试。现在,我已经更改了该类,以从Spring应用程序上下文中获取字段值。由于无法初始化类XX,因此单元测试现在失败。

我不能用伪支持类包装XX类,因为要测试的逻辑很复杂,并且对XX类的调用嵌套在对其他旧类的多层调用中。所以我试图找到一种方法来模拟类XX中的静态方法。有办法吗?我正在使用Jmock库。

Jef*_*son 5

在JMock中似乎没有一种模拟静态方法的方法。请参阅此相关线程。JMock的创建者似乎采取精英观点,即如果代码中包含静态方法,则不值得使用JMock对代码进行测试。

我建议使用像JMockit这样的工具,它提供功能更全的模拟工具集。

  • @Kevin ...不,我认为这很准确。许多模拟框架都像史蒂夫·弗里曼(Steve Freeman)在链接的问题中所做的那样声明:“我们不支持在jMock中模拟静态方法,因为它不适合我们的设计方法”。我认为这是精英主义者...基本上是对试图使用静态测试代码的用户说的,对不起,但您做错了。 (3认同)
  • 哇,@ Jeff,我认为称他们为“精英主义者”有点儿麻烦,因为他们暗示,静态的过度使用*有时*表示设计问题。而且我不是JMock的辩护律师(从未使用过)。即使您不同意他们的理由,但这也不符合他们的设计方法,这根本不是精英主义者的说法。“不值得测试...”不过,我会为您提供+1的戏剧性和幽默感。 (2认同)