是 mockito 使用反射 api 来模拟对象

is mockito uses reflection api to mock objects

Mockito 用于模拟单元测试的对象。同样可以使用 java 反射 API 来完成。这是否意味着 Mockito 是根据 java 的反射 API 实现的?

不,Mockito 不使用 java.lang.reflect.Proxy,即 only works on interfaces。 (即使是这样,我也会对 "A can be used for B, that means library L used A for B" 的逻辑保持警惕。)

为了允许更灵活的模拟,包括模拟具体 classes,Mockito 使用以下方法为其模拟生成字节码:

就其价值而言,Mockito 使用的 CGLib 代理 class 被设计为 drop-in replacement for java.lang.reflect.Proxy.


旁注:Mockito 肯定使用 Java 的反射 API,例如引用 InvocationOnMock.getMethod 中的 Method 对象。不过,这可能不是您所说的 "used to mock the objects"。