我们现在可以用Mockito 2模拟静态方法吗?

F.B*_*BOU 8 junit mocking mockito

我读到Mockito 2不再使用CGLIB /代理,而是使用ByteBuddy进行模拟创建.这是否意味着从现在开始可以模拟静态方法和私有方法?

Gho*_*ica 7

不,你不能(在这里看到他们的文件;我相信他们会提到这一点).

因此,PowerMock(ito)和JMockit是支持模拟静态方法的两个模拟框架.

但是,一些个人意见:尽管如此,仍然应该使用Mockito而不是PowerMock(ito); 只需编写可以用Mockito测试的代码; 而这不需要PowerMock.我的意思是:当你编写自己的代码时,你认为你需要模拟静态调用; 那你就是在努力测试代码.

答案不是寻找强大的模拟框架; 但要编写易于测试的代码.您可以查看这些视频,了解如何操作.

最后:不要认为PowerMockito是一个不错的选择.Mockito现在版本为2.79(截至2017年3月).但是当你看看PowerMockito时; 你会发现它附带了一些Mockito 2.0.42测试版的东西 - 因为PowerMockito人无法让他们的工具使用任何更新版本的Mockito.这是一种耻辱,因为那些较新的Mockito版本有很多有趣的功能.