Mockito最新版本支持抑制静态块

Que*_*ing 5 mockito

我正在尝试使用最新的(5.7.0)Mockito 添加测试,并使用 Mockito.mockStatic(...) 来使用静态方法模拟类,效果很好。但是,当我有带有静态块的类时,它无法使用java.lang.InternalError: class redefinition failed: invalid class.

最新的mockito版本是否支持这一点,或者我仍然必须接受其他替代方案,例如powermock。

小智 2

我确实遇到了同样的错误,并且在互联网上找不到答案,所以我看到这是 1 个月前的问题,但可能会对某人有所帮助。

问题是模拟类(或此静态块使用的类)不在类路径中。在模拟该方法之前,所有静态块或字段初始化程序都将运行,这会导致问题。

您可以通过在模拟该静态方法之前尝试使用该静态方法来验证类路径中缺少哪个类。你应该得到java.lang.NoClassDefFoundError一个类名。

当你解决这个问题时,一切都会正常。