Java 类org.mockito.cglib.proxy.Enhancer 实例源码

项目:powermock    文件:ProxyFrameworkImpl.java   
/**
 * {@inheritDoc}
 */
public boolean isProxy(Class<?> type) {
    if (type == null) {
        return false;
    }
    return type.getName().contains("$$EnhancerByMockitoWithCGLIB$$") || Enhancer.isEnhanced(type);
}
项目:mockito-cglib    文件:MockUtilTest.java   
@Test
public void should_scream_when_enhanced_but_not_a_mock_passed() {
    Object o = Enhancer.create(ArrayList.class, NoOp.INSTANCE);
    try {
        mockUtil.getMockHandler(o);
        fail();
    } catch (NotAMockException e) {}
}
项目:astor    文件:MockUtilTest.java   
@Test 
public void shouldScreamWhenEnhancedButNotAMockPassed() {
    Object o = Enhancer.create(ArrayList.class, NoOp.INSTANCE);
    try {
        mockUtil.getMockHandler(o);
        fail();
    } catch (NotAMockException e) {}
}
项目:astor    文件:MockUtilTest.java   
@Test 
public void should_scream_when_enhanced_but_not_a_mock_passed() {
    Object o = Enhancer.create(ArrayList.class, NoOp.INSTANCE);
    try {
        mockUtil.getMockHandler(o);
        fail();
    } catch (NotAMockException e) {}
}
项目:mockito-cglib    文件:ClassImposterizer.java   
public Class<Factory> createProxyClass(Class<?> mockedType, Class<?>... interfaces) {
    if (mockedType == Object.class) {
        mockedType = ClassWithSuperclassToWorkAroundCglibBug.class;
    }

    Enhancer enhancer = new Enhancer() {
        @Override
        @SuppressWarnings("unchecked")
        protected void filterConstructors(Class sc, List constructors) {
            // Don't filter
        }
    };
    Class<?>[] allMockedTypes = prepend(mockedType, interfaces);
    enhancer.setClassLoader(SearchingClassLoader.combineLoadersOf(allMockedTypes));
    enhancer.setUseFactory(true);
    if (mockedType.isInterface()) {
        enhancer.setSuperclass(Object.class);
        enhancer.setInterfaces(allMockedTypes);
    } else {
        enhancer.setSuperclass(mockedType);
        enhancer.setInterfaces(interfaces);
    }
    enhancer.setCallbackTypes(new Class[]{MethodInterceptor.class, NoOp.class});
    enhancer.setCallbackFilter(IGNORE_BRIDGE_METHODS);
    if (mockedType.getSigners() != null) {
        enhancer.setNamingPolicy(NAMING_POLICY_THAT_ALLOWS_IMPOSTERISATION_OF_CLASSES_IN_SIGNED_PACKAGES);
    } else {
        enhancer.setNamingPolicy(MockitoNamingPolicy.INSTANCE);
    }

    enhancer.setSerialVersionUID(42L);

    try {
        return enhancer.createClass();
    } catch (CodeGenerationException e) {
        if (Modifier.isPrivate(mockedType.getModifiers())) {
            throw new MockitoException("\n"
                    + "Mockito cannot mock this class: " + mockedType
                    + ".\n"
                    + "Most likely it is a private class that is not visible by Mockito");
        }
        throw new MockitoException("\n"
                + "Mockito cannot mock this class: " + mockedType
                + "\n"
                + "Mockito can only mock visible & non-final classes."
                + "\n"
                + "If you're not sure why you're getting this error, please report to the mailing list.", e);
    }
}