ahmaddarawshi / powermock

Automatically exported from code.google.com/p/powermock
0 stars 0 forks source link

Exception when stubbing static: GloballyConfiguredAnswer cannot be cast to org.mockito.ReturnValues #144

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Attempting to stub a getInstance() method of a factory to return a stub.
2. Using Junit 4.4, execute the test.
3. Issue starts from: PowerMockito.mockStatic(InvokerFactory.class); 

What is the expected output? What do you see instead?
I expect a mock to created and usuable in the later calls:

        Mockito.when(InvokerFactory.getInvoker()).thenReturn("1"); 
        InvokerFactory.getInvoker();

What version of the product are you using? On what operating system?

 - Windows XP (SP1)
 - PowerMock 1.2.5.
 - Junit 4.4
 - Eclipse 3.4.2.

Please provide any additional information below.

====

public class InvokerFactory
{
    private InvokerFactory(){}

    public static String getInvoker()
    {
        return "ret";
    }
}

====

@RunWith( PowerMockRunner.class)
@PrepareForTest({InvokerFactory.class})
public class FactorTest extends TestCase
{
    public void testd() throws ServiceException
    {     
        PowerMockito.mockStatic(InvokerFactory.class); // <-- Error
        Mockito.when(InvokerFactory.getInvoker()).thenReturn("1"); 
        InvokerFactory.getInvoker();
    }
}

Original issue reported on code.google.com by grant.va...@googlemail.com on 2 Sep 2009 at 9:29

GoogleCodeExporter commented 9 years ago
Would help if I added the stack trace:

java.lang.ClassCastException: 
org.mockito.internal.stubbing.defaultanswers.GloballyConfiguredAnswer cannot be 
cast 
to org.mockito.ReturnValues
    at org.powermock.api.mockito.PowerMockito.createMethodInvocationControl
(PowerMockito.java:236)
    at org.powermock.api.mockito.PowerMockito.doMock(PowerMockito.java:150)
    at org.powermock.api.mockito.PowerMockito.mockStatic(PowerMockito.java:67)
    at com.rsa.core.service.wm.integration.FactorTest.testd(FactorTest.java:36)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
    at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$2.
runTe
stMethod(PowerMockJUnit44RunnerDelegateImpl.java:222)
    at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
    at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters
(MethodRoadie.java:87)
    at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$2.
runBe
foresThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:212)
    at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
    at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
    at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.in
vokeT
estMethod(PowerMockJUnit44RunnerDelegateImpl.java:205)
    at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.ru
nMeth
ods(PowerMockJUnit44RunnerDelegateImpl.java:159)
    at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.
run
(PowerMockJUnit44RunnerDelegateImpl.java:133)
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
    at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.ru
n
(PowerMockJUnit44RunnerDelegateImpl.java:131)
    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:44)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run
(JUnit4TestReference.java:45)
    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)

Original comment by grant.va...@googlemail.com on 2 Sep 2009 at 9:32

GoogleCodeExporter commented 9 years ago
Are you using Mockito 1.8? It's not yet supported. We're working to upgrading 
our
PowerMock to work with Mockito 1.8 but right now it only works with 1.7.

Original comment by johan.ha...@gmail.com on 2 Sep 2009 at 10:30

GoogleCodeExporter commented 9 years ago
Great stuff.  Thank you.

Original comment by grant.va...@googlemail.com on 2 Sep 2009 at 2:08

GoogleCodeExporter commented 9 years ago

Original comment by johan.ha...@gmail.com on 2 Sep 2009 at 2:42

GoogleCodeExporter commented 9 years ago
Mockito 1.8 support is now available in the trunk

Original comment by johan.ha...@gmail.com on 2 Sep 2009 at 7:21