NoSuchMethodError: javassist.Modifier.isPackage(I)Z during allowMockingOfPackagePrivateClasses(MainMockTransformer.java:94)

135 views
Skip to first unread message

Mark Fekete

unread,
Oct 30, 2014, 3:04:27 AM10/30/14
to powe...@googlegroups.com
HI,

I'm getting the following errror just before the BEFORE Method. I think during @PrepareForTest:

java.lang.NoSuchMethodError: javassist.Modifier.isPackage(I)Z
at org.powermock.core.transformers.impl.MainMockTransformer.allowMockingOfPackagePrivateClasses(MainMockTransformer.java:94)
at org.powermock.core.transformers.impl.MainMockTransformer.transform(MainMockTransformer.java:54)
at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:251)
at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:180)
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:68)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:138)
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:39)
at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:218)
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>(JUnit4TestSuiteChunkerImpl.java:59)
at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>(AbstractCommonPowerMockRunner.java:32)
at org.powermock.modules.junit4.PowerMockRunner.<init>(PowerMockRunner.java:33)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)


The  Class I want to mock is an abstract class. Could that be the Issue?

This is how my code looks like:

@RunWith(PowerMockRunner.class)
@PrepareForTest(Registry.class)
public class TimerTest {

  private NotesController controller;
  private PluginEnvironment environment;
  private Registry registry;
  
  @Before
  public void init() {
    controller = new NotesController();
    environment = mock(PluginEnvironment.class);
    when(environment.getPluginDirectory()).thenReturn(new File("test-data"));
    
    mockStatic(Registry.class);
    DefaultServiceClientManager serviceClientManager = mock(DefaultServiceClientManager.class);
    when(registry.get(ServiceClientManager.class)).thenReturn(serviceClientManager);
    controller.init(environment);
  }

Johan Haleby

unread,
Oct 30, 2014, 3:12:01 AM10/30/14
to powe...@googlegroups.com
What version of PowerMock and Javassist are you using?

--
You received this message because you are subscribed to the Google Groups "PowerMock" group.
To unsubscribe from this group and stop receiving emails from it, send an email to powermock+...@googlegroups.com.
To post to this group, send email to powe...@googlegroups.com.
Visit this group at http://groups.google.com/group/powermock.
For more options, visit https://groups.google.com/d/optout.

Mark Fekete

unread,
Nov 5, 2014, 3:29:11 AM11/5/14
to powe...@googlegroups.com
I'm using powermock-mockito-junit-1.5.6. 
What do you mean with javaassist?

Johan Haleby

unread,
Nov 6, 2014, 12:56:46 AM11/6/14
to powe...@googlegroups.com
Javassist is the byte-code manipulation library used by PowerMock. If you don't have the right vesion of Javassist in the classpath the PowerMock won't work.
Reply all
Reply to author
Forward
0 new messages