如何在不使用power mock的情况下模拟私有方法

问题描述 投票:0回答:1

我们可以在不使用powermockito的情况下模拟私有方法。我知道虽然powermockito有可能,但只是想与所有人一起检查,是否有可能通过其他方式。谢谢 - 萨姆

reflection mockito powermock powermockito
1个回答
2
投票

按照设计,如果没有PowerMockito或类似的工具,这是不可能的。

请参阅Mockito's Wiki,其中包含以下原因:

  1. 它需要对类加载器进行黑客攻击,这种类加载器绝不是防弹的,它会更改API(您必须使用自定义测试运行器,注释类等)。
  2. 这很容易解决 - 只需将方法的可见性从私有更改为受包保护(或受保护)。
  3. 它要求团队花时间实施和维护它。鉴于第(2)点以及已经在不同工具(powermock)中实现的事实,它没有意义。
  4. 最后......模拟私有方法暗示了面向对象的理解存在问题。在OO中,您希望对象(或角色)进行协作,而不是方法。忘记pascal和程序代码。在对象中思考。

当然有些情况下无法解决问题,只需退一步即可

  1. 确保你正在测试正确的东西(你应该测试私有方法而不是公共方法)
  2. 考虑将这些方法更改为包私有而不是依赖PowerMock。
© www.soinside.com 2019 - 2024. All rights reserved.