private ClassLoader create(final ByteCodeFramework byteCodeFramework, final String[] prepareForTestClasses, final MockTransformer... extraMockTransformer) { final String[] classesToLoadByMockClassloader = makeSureArrayContainsTestClassName(prepareForTestClasses, testClass.getName()); final ClassLoader mockLoader; if (isContextClassLoaderShouldBeUsed(classesToLoadByMockClassloader)) { mockLoader = Thread.currentThread().getContextClassLoader(); } else { mockLoader = createMockClassLoader(byteCodeFramework, classesToLoadByMockClassloader, extraMockTransformer); } return mockLoader; }
private ClassLoader createMockClassLoader(final ByteCodeFramework byteCodeFramework, final String[] classesToLoadByMockClassloader, final MockTransformer... extraMockTransformer) { final ClassLoader mockLoader = createWithPrivilegeAccessController(byteCodeFramework, classesToLoadByMockClassloader, extraMockTransformer); initialize(mockLoader); return mockLoader; }
private boolean isContextClassLoaderShouldBeUsed(String[] classesToLoadByMockClassloader) { return (classesToLoadByMockClassloader == null || classesToLoadByMockClassloader.length == 0) && !hasMockPolicyProvidedClasses(testClass); }
ClassLoader createClassLoader(Class<?> testClass) { final String[] packagesToIgnore = arrayMerger.mergeArrays( String.class, ignorePackagesExtractor.getPackagesToIgnore(testClass), expectedExceptionsExtractor.getPackagesToIgnore(testClass) ); return new MockClassLoaderFactory(testClass, packagesToIgnore).createForClass(null); }
private ClassLoader createClassLoaderForMethod(final Class<?> testClass, final Method method) { final MockTransformer extraMockTransformer; if (null == testMethodAnnotation()) { extraMockTransformer = null; } else { extraMockTransformer = TestClassTransformerBuilder.forTestClass(testClass) .bytecodeFrameworkClue(method) .removesTestMethodAnnotation(testMethodAnnotation()) .fromAllMethodsExcept(method); } final MockClassLoaderFactory classLoaderFactory = new MockClassLoaderFactory(testClass); return classLoaderFactory.createForMethod(method, extraMockTransformer); }
public ClassLoader createForMethod(final Method method, final MockTransformer... extraMockTransformers) { final ByteCodeFramework byteCodeFramework = ByteCodeFramework.getByteCodeFrameworkForMethod(testClass, method); if (method.isAnnotationPresent(PrepareEverythingForTest.class)) { final String[] classesToLoadByMockClassloader = {MockClassLoader.MODIFY_ALL_CLASSES}; return create(byteCodeFramework, classesToLoadByMockClassloader, extraMockTransformers); } else { final String[] suppressStaticClasses = getStaticSuppressionClasses(method); final String[] prepareForTestClasses = prepareForTestExtractor.getTestClasses(method); final String[] classesToLoadByMockClassloader = arrayMerger.mergeArrays(String.class, prepareForTestClasses, suppressStaticClasses); return create(byteCodeFramework, classesToLoadByMockClassloader, extraMockTransformers); } }
public ClassLoader createForClass(final MockTransformer... extraMockTransformer) { final ByteCodeFramework byteCodeFramework = ByteCodeFramework.getByteCodeFrameworkForTestClass(testClass); if (testClass.isAnnotationPresent(PrepareEverythingForTest.class)) { return create(byteCodeFramework, new String[]{MockClassLoader.MODIFY_ALL_CLASSES}, extraMockTransformer); } else { final String[] prepareForTestClasses = prepareForTestExtractor.getTestClasses(testClass); final String[] suppressStaticClasses = suppressionExtractor.getTestClasses(testClass); return create(byteCodeFramework, arrayMerger.mergeArrays(String.class, prepareForTestClasses, suppressStaticClasses), extraMockTransformer); } }
private ClassLoader createDefaultMockLoader(final Class<?> testClass, final Collection<Method> testMethodsForOtherClassLoaders) { final MockTransformer extraMockTransformer; if (null == testMethodAnnotation()) { extraMockTransformer = null; } else { extraMockTransformer = TestClassTransformerBuilder .forTestClass(testClass) .removesTestMethodAnnotation(testMethodAnnotation()) .fromMethods(testMethodsForOtherClassLoaders); } return new MockClassLoaderFactory(testClass).createForClass(extraMockTransformer); }