Package org.powermock.core.classloader
Class MockClassLoader
java.lang.Object
java.lang.ClassLoader
org.powermock.core.classloader.DeferSupportingClassLoader
org.powermock.core.classloader.MockClassLoader
- Direct Known Subclasses:
JavassistMockClassLoader
The classloader loads and modified all classes except:
- system classes. They are deferred to system classloader
- classes that locate in packages that specified as packages to ignore with using
MockClassLoaderConfiguration.addIgnorePackage(String...)
Testing frameworks classes are loaded, but not modified.
The classloader uses list of MockTransformer
to modify classes during loading.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ClassMarker
protected ClassWrapperFactory
private MockTransformerChain
static final String
Pass this string to the constructor to indicate that all classes should be modified.Fields inherited from class org.powermock.core.classloader.DeferSupportingClassLoader
deferTo
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
MockClassLoader
(String[] classesToMock, String[] packagesToDefer) Creates a new instance of the based on the following parameters:protected
MockClassLoader
(MockClassLoaderConfiguration configuration, ClassWrapperFactory classWrapperFactory) Creates a new instance of the based on the following parameters: -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract byte[]
defineAndTransformClass
(String name, ProtectionDomain protectionDomain) private Class
<?> defineClass
(String name, URL url, ProtectionDomain protectionDomain) Class
<?> defineClass
(String name, ProtectionDomain protectionDomain, byte[] clazz) protected Class
<?> loadClassByThisClassLoader
(String className) private Class
<?> loadMockClass
(String name, ProtectionDomain protectionDomain) protected Class
<?> loadUnmockedClass
(String name, ProtectionDomain protectionDomain) private byte[]
void
setMockTransformerChain
(MockTransformerChain mockTransformerChain) protected <T> ClassWrapper
<T> transformClass
(ClassWrapper<T> wrappedType) Methods inherited from class org.powermock.core.classloader.DeferSupportingClassLoader
cache, findResource, findResources, getClassLoadingLock, getConfiguration, getResource, getResourceAsStream, getResources, loadClass
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
Field Details
-
MODIFY_ALL_CLASSES
Pass this string to the constructor to indicate that all classes should be modified.- See Also:
-
classMarker
-
classWrapperFactory
-
mockTransformerChain
-
-
Constructor Details
-
MockClassLoader
Creates a new instance of the based on the following parameters:- Parameters:
classesToMock
- The classes that must be modified to prepare for testability.packagesToDefer
- Classes in these packages will be defered to the system class-loader.
-
MockClassLoader
protected MockClassLoader(MockClassLoaderConfiguration configuration, ClassWrapperFactory classWrapperFactory) Creates a new instance of the based on the following parameters:- Parameters:
configuration
- The configuration of class loader. Configuration contains information about classes which should be loaded by class loader, defer to system and mocked.classWrapperFactory
- an instance ofClassWrapperFactory
which is used to wrap internal framework's representation of the class intoClassWrapper
- See Also:
-
-
Method Details
-
loadClassByThisClassLoader
protected Class<?> loadClassByThisClassLoader(String className) throws ClassFormatError, ClassNotFoundException - Specified by:
loadClassByThisClassLoader
in classDeferSupportingClassLoader
- Throws:
ClassFormatError
ClassNotFoundException
-
setMockTransformerChain
-
getMockTransformerChain
-
loadUnmockedClass
protected Class<?> loadUnmockedClass(String name, ProtectionDomain protectionDomain) throws ClassNotFoundException - Throws:
ClassNotFoundException
-
defineClass
private Class<?> defineClass(String name, URL url, ProtectionDomain protectionDomain) throws IOException - Throws:
IOException
-
readClass
- Throws:
IOException
-
loadMockClass
private Class<?> loadMockClass(String name, ProtectionDomain protectionDomain) throws ClassNotFoundException - Throws:
ClassNotFoundException
-
defineClass
-
transformClass
- Throws:
Exception
-
defineAndTransformClass
protected abstract byte[] defineAndTransformClass(String name, ProtectionDomain protectionDomain) throws ClassNotFoundException - Throws:
ClassNotFoundException
-