When I try to mock URL class with powermock I am getting a NPE. Sample
code I used is
public void testUrl() {
URL url = PowerMock.createMock(URL.class);
EasyMock.expect(url.toString()).andReturn("
http://localhost:
8080/abcd").anyTimes();
PowerMock.replay(url);
System.out.println(url.toString());
System.out.println(url);
}
I am getting NPE at second sysout (First sysout is working fine).
PowerMock is trying to call the real toString method in case of second
sysout. Stack trace is given below.
java.lang.NullPointerException
at java.net.URL.toExternalForm(Unknown Source)
at java.net.URL.toString(Unknown Source)
at java.lang.String.valueOf(Unknown Source)
at java.io.PrintStream.println(Unknown Source)
at com.testing.mytest.testUrl(MyURLTest.java:208)
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 junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at
org.powermock.modules.junit3.internal.impl.PowerMockJUnit3RunnerDelegateImpl.run
(PowerMockJUnit3RunnerDelegateImpl.java:114)
at
org.powermock.modules.junit3.internal.impl.JUnit3TestSuiteChunkerImpl.run
(JUnit3TestSuiteChunkerImpl.java:166)
at org.powermock.modules.junit3.PowerMockSuite.run
(PowerMockSuite.java:52)
at
org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run
(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run
(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:460)
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)
Whats wrong in this. I am using PowerMock 1.3.5 and Junit 3 for
running the test. Please help