Class MockClassLoaderConfiguration


  • public class MockClassLoaderConfiguration
    extends java.lang.Object
    The instance of the class provides information about classes which have to be mocked, loaded without modification or defer to system class loader.
    • Field Detail

      • PACKAGES_TO_BE_DEFERRED

        static final java.lang.String[] PACKAGES_TO_BE_DEFERRED
      • PACKAGES_TO_LOAD_BUT_NOT_MODIFY

        private static final java.lang.String[] PACKAGES_TO_LOAD_BUT_NOT_MODIFY
      • specificClassesToLoadButNotModify

        private final java.lang.String[] specificClassesToLoadButNotModify
      • modify

        private final java.util.Set<java.lang.String> modify
      • deferPackages

        private java.lang.String[] deferPackages
    • Constructor Detail

      • MockClassLoaderConfiguration

        public MockClassLoaderConfiguration()
        Create an instance of configuration without any classes to mock or ignore.
      • MockClassLoaderConfiguration

        public MockClassLoaderConfiguration​(java.lang.String[] classesToMock,
                                            java.lang.String[] packagesToDefer)
        Create an instance of configuration
        Parameters:
        classesToMock - classes that should be modified by MockClassLoader.
        packagesToDefer - classes/packages that should be deferred to system class loader.
    • Method Detail

      • addIgnorePackage

        public void addIgnorePackage​(java.lang.String... packagesToIgnore)
        Add packages or classes to ignore. Loading of all classes that locate in the added packages will be delegate to a system classloader.

        Package should be specified with using mask. Example:

             configuration.addIgnorePackage("org.powermock.example.*");
         
        Parameters:
        packagesToIgnore - fully qualified names of classes or names of packages that end by .*
      • addClassesToModify

        public final void addClassesToModify​(java.lang.String... classes)
        Add classes that will be loaded by the mock classloader, i.e. these classes will be byte-code manipulated to allow for testing. Any classes contained in the PACKAGES_TO_BE_DEFERRED will be ignored. How ever classes added here have precedence over additionally deferred (ignored) packages (those ignored by the user using @PrepareForTest).
        Parameters:
        classes - The fully qualified name of the classes that will be appended to the list of classes that will be byte-code modified to enable testability.
      • shouldDefer

        boolean shouldDefer​(java.lang.String className)
      • shouldMockClass

        boolean shouldMockClass​(java.lang.String className)
      • getDeferPackages

        java.lang.String[] getDeferPackages()
      • shouldDefer

        private boolean shouldDefer​(java.lang.String[] packages,
                                    java.lang.String name)
      • deferConditionMatches

        private boolean deferConditionMatches​(java.lang.String name,
                                              java.lang.String packageName)
      • shouldIgnore

        private boolean shouldIgnore​(java.lang.String[] packages,
                                     java.lang.String name)
      • shouldLoadUnmodifiedClass

        private boolean shouldLoadUnmodifiedClass​(java.lang.String className)
      • shouldLoadWithMockClassloaderWithoutModifications

        private boolean shouldLoadWithMockClassloaderWithoutModifications​(java.lang.String className)
      • shouldModifyClass

        private boolean shouldModifyClass​(java.lang.String className)
      • shouldIgnore

        private boolean shouldIgnore​(java.lang.String className)
      • shouldModify

        boolean shouldModify​(java.lang.String className)
      • shouldModifyAll

        private boolean shouldModifyAll()
      • getPackagesToDefer

        private static java.lang.String[] getPackagesToDefer​(java.lang.String[] additionalDeferPackages)