Class AbstractTestSuiteChunkerImpl<T>

java.lang.Object
org.powermock.tests.utils.impl.AbstractCommonTestSuiteChunkerImpl
org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl<T>
All Implemented Interfaces:
RunnerTestSuiteChunker, TestSuiteChunker
Direct Known Subclasses:
JUnit4TestSuiteChunkerImpl

public abstract class AbstractTestSuiteChunkerImpl<T> extends AbstractCommonTestSuiteChunkerImpl implements RunnerTestSuiteChunker
Abstract base class for test suite chunking, i.e. a suite is chunked into several smaller pieces which are ran with different classloaders. A chunk is defined by the PrepareForTest annotation and whichever test-method annotation the actual implementation-class specifies by overriding the method AbstractCommonTestSuiteChunkerImpl.testMethodAnnotation(). This to make sure that you can byte-code manipulate classes in tests without impacting on other tests.
  • Field Details

    • delegatesCreatedForTheseClasses

      protected final Set<Class<?>> delegatesCreatedForTheseClasses
    • delegates

      protected final List<T> delegates
    • testCount

      protected volatile int testCount
  • Constructor Details

    • AbstractTestSuiteChunkerImpl

      protected AbstractTestSuiteChunkerImpl(Class<?> testClass) throws Exception
      Throws:
      Exception
    • AbstractTestSuiteChunkerImpl

      protected AbstractTestSuiteChunkerImpl(Class<?>... testClasses) throws Exception
      Throws:
      Exception
  • Method Details

    • getPowerMockTestListenersLoadedByASpecificClassLoader

      protected Object getPowerMockTestListenersLoadedByASpecificClassLoader(Class<?> clazz, ClassLoader classLoader)
    • createTestDelegators

      public final void createTestDelegators(Class<?> testClass, List<TestChunk> chunks) throws Exception
      Description copied from interface: RunnerTestSuiteChunker
      Create the test delegators needed for a whole class.
      Specified by:
      createTestDelegators in interface RunnerTestSuiteChunker
      Throws:
      Exception
    • createDelegatorFromClassloader

      protected abstract T createDelegatorFromClassloader(ClassLoader classLoader, Class<?> testClass, List<Method> methodsToTest) throws Exception
      Throws:
      Exception
    • getInternalTestIndex

      public int getInternalTestIndex(int originalTestIndex)
      Get the internal test index for a junit runner delegate based on the "real" original test index. For example, the test may need to run a single test, for example the test with index 3. However since PowerMock may have chunked the test suite to use many classloaders and junit delegators the index (3) must be mapped to an internal representation for the specific junit runner delegate. This is what this method does. I.e. it will iterate through all junit runner delegates and see if they contain the test with index 3, in the internal index of this test delegator is returned.
      Parameters:
      originalTestIndex - The original test index as seen by the test runner.
      Returns:
      The internal test index as seen by PowerMock or -1 if no index was found.
    • getDelegatorIndex

      public int getDelegatorIndex(int testIndex)
      Get the junit runner delegate that handles the test at index testIndex. Throws a RuntimeException if a delegator is not found for the specific test index.
      Parameters:
      testIndex - The test index that a delegator should hold.
      Returns:
      The index for of the junit runner delegate as seen by JTestRack.
    • getTestClasses

      protected Class<?>[] getTestClasses()