Mockito использует отражение и CGLib для расширения класса Employee динамически создаваемым суперклассом.Как часть этого, он начинается с того, что все конструкторы Employee становятся открытыми - включая конструктор по умолчанию, который все еще присутствует, но закрытый, если вы объявили конструктор, который принимает параметры.
public <T> T imposterise(final MethodInterceptor interceptor, Class<T> mockedType, Class<?>... ancillaryTypes) {
try {
setConstructorsAccessible(mockedType, true);
Class<?> proxyClass = createProxyClass(mockedType, ancillaryTypes);
return mockedType.cast(createProxy(proxyClass, interceptor));
} finally {
setConstructorsAccessible(mockedType, false);
}
}
private void setConstructorsAccessible(Class<?> mockedType, boolean accessible) {
for (Constructor<?> constructor : mockedType.getDeclaredConstructors()) {
constructor.setAccessible(accessible);
}
}
Я предполагаю, что он вызываетконструктор по умолчанию при создании суперкласса, хотя я этого не проверял.Вы можете проверить это самостоятельно, объявив закрытый конструктор по умолчанию Employee () и добавив в него некоторую запись.