cant seem to get started

3,772 views
Skip to first unread message

Lior Friedman

unread,
Jan 13, 2009, 1:51:11 PM1/13/09
to PowerMock
Hi,
I’m taking my first steps with PowerMock (I’m kind of new to java in
general) so please take it easy on me.

I’m trying to create the first example for static mocking and when
trying to run the test I’m getting a weird initialization exception.
Now I’m sure this is something simple I’m missing, but I can’t seem to
locate it.

Can anyone help me on this?

The Code:
package Demo.Tests;

import junit.framework.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import static org.powermock.api.easymock.PowerMock.mockStatic;
import Demo.SalaryHandlers.SalaryCalculator;
import static org.easymock.EasyMock.expect;

@RunWith(PowerMockRunner.class)
@PrepareForTest(SalariesTests.class)
public class SalariesTests
{
@Test
public void FakeCreation()
{
mockStatic(SalaryCalculator.class);
expect(SalaryCalculator.ReturnFive()).andReturn(6);

Assert.assertEquals(6, SalaryCalculator.ReturnFive());
}
}


The Trace:
java.lang.NoClassDefFoundError: javassist/expr/ExprEditor
at
org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createNewClassloader
(AbstractTestSuiteChunkerImpl.java:166)
at
org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.chunkClass
(AbstractTestSuiteChunkerImpl.java:133)
at
org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.<init>
(AbstractTestSuiteChunkerImpl.java:98)
at
org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.<init>
(AbstractTestSuiteChunkerImpl.java:91)
at
org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>
(JUnit4TestSuiteChunkerImpl.java:57)
at
org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>
(AbstractCommonPowerMockRunner.java:34)
at org.powermock.modules.junit4.PowerMockRunner.<init>
(PowerMockRunner.java:24)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
at java.lang.reflect.Constructor.newInstance(Unknown
Source)
at org.junit.internal.requests.ClassRequest.buildRunner
(ClassRequest.java:33)
at org.junit.internal.requests.ClassRequest.getRunner
(ClassRequest.java:28)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>
(JUnit4TestReference.java:28)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>
(JUnit4TestClassReference.java:24)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest
(JUnit4TestLoader.java:40)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests
(JUnit4TestLoader.java:30)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:445)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run
(RemoteTestRunner.java:386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main
(RemoteTestRunner.java:196)
Caused by: java.lang.ClassNotFoundException: javassist.expr.ExprEditor
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native
Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown
Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown
Source)
... 21 more

Johan Haleby

unread,
Jan 13, 2009, 2:32:00 PM1/13/09
to powe...@googlegroups.com
Hi,

You need to put the Javassist jar on the classpath. Please download powermock-1.1.1-with-dependencies.zip and put all files in the classpath before using PowerMock. Skip the mockito library though if you're only using the EasyMock extension.

/Johan

Johan Haleby

unread,
Jan 13, 2009, 2:35:43 PM1/13/09
to powe...@googlegroups.com
I can see that you're doing another mistake, you should prepare SalaryCalculator.class for testing, not SalariesTests.class. I.e. @PrepareForTest(SalaryCalculator.class).

Lior Friedman

unread,
Jan 13, 2009, 4:25:30 PM1/13/09
to PowerMock
Johan,

Thank you for the help.
That did the trick

Did i mention that i really like your tool?

Lior


Johan Haleby

unread,
Jan 14, 2009, 12:33:52 PM1/14/09
to powe...@googlegroups.com
Thank you very much. We've spent many hours on our spare time creating
PowerMock so we really appreciate that you find it useful.
Reply all
Reply to author
Forward
0 new messages