有没有好的PowerMock替代品?

11

我正在测试一些旧代码,并尝试使用PowerMock来模拟静态方法调用。但我很快发现它会干扰类加载器,这不是我觉得自己有资格深入挖掘的问题。FYI,我的问题类似于这个,但那里发布的解决方案在我的情况下不起作用。

有没有其他好的替代品可以尝试,能够模拟静态方法,兼容TestNG,并成功地用于某些实际项目中?

我知道最好的替代方案是可测试的代码,但重构我的当前项目并不总是可能的。


jmockit是一个选项(可以模拟静态方法)-它的关于页面列出了几个替代方案。 - assylias
3
如果你正在添加新的单元测试 - 为什么不利用这个机会来重构围绕你想要测试的代码,以符合合理的测试流程呢? - rmalchow
@rmalchow 我很想进行全面的重构 :) 但目前我们团队还没有达成一致意见,应该在多大程度上拥抱重构以最小化破坏的风险。同时,我被要求看看是否有一种替代方案,不会像PowerMock那样引起那么多问题。 - Iwavenice
@assylias 谢谢,jmockit看起来是值得一试的东西。 - Iwavenice
1
jmockit的链接已经失效,jmockit现在在这里:http://jmockit.github.io/ 但似乎没有备选列表。 - antonyh
1个回答

1
您有几个选项:
  • 尝试使用不同的进程内模拟工具,例如Mockito(自版本3.4.0起支持模拟静态方法),以查看您所指出的问题是否消失。但很可能这不是工具问题,而是方法问题,请阅读下一点。
  • 使用过程外测试替身代替进程内模拟,这样你就可以黑盒测试你的应用程序,而不必使用静态模拟或重构代码。你可以通过存根或模拟依赖系统来实现这一点,而不是专注于单个类或方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接