use of org.powermock.tests.utils.impl.StaticConstructorSuppressExtractorImpl in project powermock by powermock.
the class PowerMockClassloaderExecutor method forClass.
public static SingleClassloaderExecutor forClass(Class<?> testClass, MockPolicyInitializer mockPolicyInitializer) {
List<MockTransformer> mockTransformerChain = new ArrayList<MockTransformer>();
mockTransformerChain.add(new ClassMockTransformer());
mockTransformerChain.add(new InterfaceMockTransformer());
MockClassLoader mockLoader = new MockClassLoader(new String[0], new String[0]);
mockLoader.setMockTransformerChain(mockTransformerChain);
mockLoader.addIgnorePackage(new PowerMockIgnorePackagesExtractorImpl().getPackagesToIgnore(testClass));
mockLoader.addClassesToModify(new PrepareForTestExtractorImpl().getTestClasses(testClass));
mockLoader.addClassesToModify(new StaticConstructorSuppressExtractorImpl().getTestClasses(testClass));
mockPolicyInitializer.initialize(mockLoader);
return new SingleClassloaderExecutor(mockLoader);
}
use of org.powermock.tests.utils.impl.StaticConstructorSuppressExtractorImpl in project powermock by powermock.
the class PowerMockJUnit44RunnerDelegateImpl method runMethods.
protected void runMethods(final RunNotifier notifier) {
final StaticConstructorSuppressExtractorImpl staticConstructorSuppressExtractorImpl = new StaticConstructorSuppressExtractorImpl();
Class<?> testType = getTestClass();
final ClassLoader thisClassLoader = getClass().getClassLoader();
if (!thisClassLoader.equals(testType.getClassLoader())) {
/*
* The test is loaded from another classloader, this means that we
* cannot get the correct annotations if we don't load the class
* from the correct class loader
*/
try {
testType = thisClassLoader.loadClass(testType.getName());
} catch (ClassNotFoundException e) {
// This should never happen
throw new RuntimeException("Internal error in PowerMock", e);
}
}
for (Method method : testMethods) {
if (staticConstructorSuppressExtractorImpl.getTestClasses(method) == null) {
staticConstructorSuppressExtractorImpl.getTestClasses(testType);
}
invokeTestMethod(method, notifier);
}
}
use of org.powermock.tests.utils.impl.StaticConstructorSuppressExtractorImpl in project powermock by powermock.
the class PowerMockJUnit4LegacyTestClassMethodsRunner method run.
@SuppressWarnings("unchecked")
@Override
public void run(RunNotifier notifier) {
final List<Method> methods = Whitebox.getInternalState(this, "fTestMethods");
if (methods.isEmpty())
notifier.testAborted(getDescription(), new Exception("No runnable methods"));
for (Method method : methods) {
final StaticConstructorSuppressExtractorImpl staticConstructorSuppressExtractorImpl = new StaticConstructorSuppressExtractorImpl();
Class<?> testType = getTestClass();
final ClassLoader thisClassLoader = getClass().getClassLoader();
if (!thisClassLoader.equals(testType.getClassLoader())) {
/*
* The test is loaded from another classloader, this means that
* we cannot get the correct annotations if we don't load the
* class from the correct class loader
*/
try {
testType = thisClassLoader.loadClass(testType.getName());
} catch (ClassNotFoundException e) {
// This should never happen
throw new RuntimeException("Internal error in PowerMock", e);
}
}
if (staticConstructorSuppressExtractorImpl.getTestClasses(method) == null) {
staticConstructorSuppressExtractorImpl.getTestClasses(testType);
}
invokeTestMethod(method, notifier);
}
}
use of org.powermock.tests.utils.impl.StaticConstructorSuppressExtractorImpl in project powermock by powermock.
the class PowerMockAgentTestInitializer method redefineClassesToSuppress.
private static void redefineClassesToSuppress(Class<?> testClass, String[] packagesToIgnore, JavaAgentClassRegister agentClassRegister) {
final String[] classesToSuppress = new StaticConstructorSuppressExtractorImpl().getTestClasses(testClass);
redefine(classesToSuppress, packagesToIgnore, agentClassRegister);
}
Aggregations