createMock() get NullPointerException error

430 views
Skip to first unread message

i928

unread,
Apr 1, 2010, 7:20:10 PM4/1/10
to PowerMock
Hi all,

I use a library class that I got NullPointerException error.

Here is the simplest class that I can reproduce this error.

import java.util.HashMap;

public final class Faults {

public Faults()
{
_hash = new HashMap();
}

public static Faults newFaults()
{
Faults fault = new Faults();
return fault;
}

public final int hashCode()
{
return _hash.hashCode();
}

private final HashMap _hash;

}

with test similar to
@RunWith(PowerMockRunner.class)
@PrepareForTest( { Faults.class })
public class Xtest {

@Test
public void testinitialize()throws Exception {
Faults f=createMock(Faults.class);
}

I need to use createMock() because apps include

Fault f= Faults.newFaults();

Any suggestion on how to avoid NullPointerException error.

Best Regards,

Chiiwen

Johan Haleby

unread,
Apr 6, 2010, 2:36:22 AM4/6/10
to powe...@googlegroups.com
Hi,

What's the stack trace?

/Johan


--
You received this message because you are subscribed to the Google Groups "PowerMock" group.
To post to this group, send email to powe...@googlegroups.com.
To unsubscribe from this group, send email to powermock+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/powermock?hl=en.


i928

unread,
Apr 7, 2010, 4:31:29 PM4/7/10
to PowerMock
Hi Johan,

Here is the stack trace.

java.lang.NullPointerException
at oracle.apps.fnd.applxdf.jdev.Faults.hashCode(Faults.java:20)
at java.util.HashMap.put(Unknown Source)
at java.util.HashSet.add(Unknown Source)
at
org.powermock.core.MockRepository.addObjectsToAutomaticallyReplayAndVerify(MockRepository.java:
218)
at org.powermock.api.easymock.PowerMock.doMock(PowerMock.java:2120)
at org.powermock.api.easymock.PowerMock.createMock(PowerMock.java:92)
at
oracle.apps.fnd.applxdf.jdev.XDFAddintest.testinitialize(XDFAddintest.java:
116)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:66)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl
$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:
322)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:
86)
at
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:
94)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl
$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:
309)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl
$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:
297)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:
84)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:
222)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:
161)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl
$1.run(PowerMockJUnit44RunnerDelegateImpl.java:135)
at
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:
34)
at
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:
44)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:
133)
at
org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:
112)
at
org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:
55)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:
46)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
197)

Thanks!

Chiiwen

On Apr 5, 11:36 pm, Johan Haleby <johan.hal...@gmail.com> wrote:
> Hi,
>
> What's the stack trace?
>
> /Johan
>

> > powermock+...@googlegroups.com<powermock%2Bunsu...@googlegroups.com>

Johan Haleby

unread,
Apr 8, 2010, 2:17:03 AM4/8/10
to powe...@googlegroups.com
It looks like the problem is the HashMap since it'll cause the NPE because the constructor is not invoked when creating the mock. You could try "createMockAndInvokeDefaultConstructor(Faults.class)" and see if that works any better.

/Johan

To unsubscribe from this group, send email to powermock+...@googlegroups.com.

Johan Haleby

unread,
Apr 12, 2010, 3:02:27 AM4/12/10
to powe...@googlegroups.com
If fixed this in trunk now. You can try it out if you like. 

Thanks for the example

/Johan
Reply all
Reply to author
Forward
0 new messages