public abstract class MockClassLoader extends DeferSupportingClassLoader
The classloader loads and modified all classes except:
MockClassLoaderConfiguration.addIgnorePackage(String...)
Testing frameworks classes are loaded, but not modified.
The classloader uses list of MockTransformer
to modify classes during loading.
MockClassLoaderConfiguration
,
ClassLoader.getSystemClassLoader()
,
IgnorePackagesExtractor
Modifier and Type | Field and Description |
---|---|
protected ClassMarker |
classMarker |
protected ClassWrapperFactory |
classWrapperFactory |
private MockTransformerChain |
mockTransformerChain |
static java.lang.String |
MODIFY_ALL_CLASSES
Pass this string to the constructor to indicate that all classes should
be modified.
|
deferTo
Modifier | Constructor and Description |
---|---|
protected |
MockClassLoader(MockClassLoaderConfiguration configuration,
ClassWrapperFactory classWrapperFactory)
Creates a new instance of the based on the
following parameters:
|
protected |
MockClassLoader(java.lang.String[] classesToMock,
java.lang.String[] packagesToDefer)
Creates a new instance of the based on the
following parameters:
|
Modifier and Type | Method and Description |
---|---|
protected abstract byte[] |
defineAndTransformClass(java.lang.String name,
java.security.ProtectionDomain protectionDomain) |
java.lang.Class<?> |
defineClass(java.lang.String name,
java.security.ProtectionDomain protectionDomain,
byte[] clazz) |
private java.lang.Class<?> |
defineClass(java.lang.String name,
java.net.URL url,
java.security.ProtectionDomain protectionDomain) |
MockTransformerChain |
getMockTransformerChain() |
protected java.lang.Class<?> |
loadClassByThisClassLoader(java.lang.String className) |
private java.lang.Class<?> |
loadMockClass(java.lang.String name,
java.security.ProtectionDomain protectionDomain) |
protected java.lang.Class<?> |
loadUnmockedClass(java.lang.String name,
java.security.ProtectionDomain protectionDomain) |
private byte[] |
readClass(java.net.URL url) |
void |
setMockTransformerChain(MockTransformerChain mockTransformerChain) |
protected <T> ClassWrapper<T> |
transformClass(ClassWrapper<T> wrappedType) |
cache, findResource, findResources, getClassLoadingLock, getConfiguration, getResource, getResourceAsStream, getResources, loadClass
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
public static final java.lang.String MODIFY_ALL_CLASSES
protected ClassMarker classMarker
protected ClassWrapperFactory classWrapperFactory
private MockTransformerChain mockTransformerChain
protected MockClassLoader(java.lang.String[] classesToMock, java.lang.String[] packagesToDefer)
classesToMock
- The classes that must be modified to prepare for testability.packagesToDefer
- Classes in these packages will be defered to the system
class-loader.protected MockClassLoader(MockClassLoaderConfiguration configuration, ClassWrapperFactory classWrapperFactory)
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 of ClassWrapperFactory
which is used to wrap internal framework's representation of
the class into ClassWrapper
MockClassLoaderConfiguration
protected java.lang.Class<?> loadClassByThisClassLoader(java.lang.String className) throws java.lang.ClassFormatError, java.lang.ClassNotFoundException
loadClassByThisClassLoader
in class DeferSupportingClassLoader
java.lang.ClassFormatError
java.lang.ClassNotFoundException
public void setMockTransformerChain(MockTransformerChain mockTransformerChain)
public MockTransformerChain getMockTransformerChain()
protected java.lang.Class<?> loadUnmockedClass(java.lang.String name, java.security.ProtectionDomain protectionDomain) throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundException
private java.lang.Class<?> defineClass(java.lang.String name, java.net.URL url, java.security.ProtectionDomain protectionDomain) throws java.io.IOException
java.io.IOException
private byte[] readClass(java.net.URL url) throws java.io.IOException
java.io.IOException
private java.lang.Class<?> loadMockClass(java.lang.String name, java.security.ProtectionDomain protectionDomain) throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundException
public java.lang.Class<?> defineClass(java.lang.String name, java.security.ProtectionDomain protectionDomain, byte[] clazz)
protected <T> ClassWrapper<T> transformClass(ClassWrapper<T> wrappedType) throws java.lang.Exception
java.lang.Exception
protected abstract byte[] defineAndTransformClass(java.lang.String name, java.security.ProtectionDomain protectionDomain) throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundException