Why doesn’t Mockito mock static methods?

I think the reason may be that mock object libraries typically create mocks by dynamically creating classes at runtime (using cglib). This means they either implement an interface at runtime (that’s what EasyMock does if I’m not mistaken), or they inherit from the class to mock (that’s what Mockito does if I’m not mistaken). Both approaches do not work for static members, since you can’t override them using inheritance.

The only way to mock statics is to modify a class’ byte code at runtime, which I suppose is a little more involved than inheritance.

That’s my guess at it, for what it’s worth…

Leave a Comment