我们如何在不使用Power Mockito的情况下模拟私有方法

时间:2018-09-17 05:54:24

标签: reflection mockito powermock powermockito

我们可以不使用powermockito来模拟私有方法吗?我知道虽然powermockito是可能的,但只是想与所有人核对,是否可以通过其他方法来进行。 谢谢 -山姆

2 个答案:

答案 0 :(得分:2)

根据设计,没有PowerMockito或类似工具是不可能的。

请参见Mockito's Wiki,其中给出以下原因:

  
      
  1. 这需要对类加载器进行黑客攻击,而这绝不是防弹措施,它   更改API(您必须使用自定义测试运行器,为类添加注释,   等。)

  2.   
  3. 这很容易解决-只需更改   从私有到受包保护(或受保护)的方法。

  4.   
  5. 这需要   团队花时间实施和维护它。而且它不   给定点(2)和已经实施的事实是有意义的   在不同的工具(powermock)中。

  6.   
  7. 最后...模拟私有方法是一个   提示面向对象的理解存在问题。   在OO中,您希望对象(或角色)进行协作,而不是方法。忘记   关于Pascal和程序代码。考虑对象。

  8.   

当然,在某些情况下,无法解决,而只需退后一步,然后

  1. 确保您正在测试正确的东西(应该测试私有方法而不是公共方法)
  2. 考虑只是将这些方法更改为包私有,而不是依赖PowerMock。

答案 1 :(得分:-1)

是的,我们可以为此使用Java供应商提供的Reflection API。