PowerMock:: [java.lang.IllegalStateException: no last call auf ein mock verfügbar]

Zu verspotten, eine statische Methode powermock geben eine Ausnahme aus, während erwartet().

@Test
public void testRegistrarService()
{
   mockStatic(IdGenerator.class);
   expect(IdGenerator.generateNewId()).andReturn(42L);
   long actualId=serTestObj.registerService();
   replay(IdGenerator.class);
   verify(IdGenerator.class);
   assertEquals(42L,actualId);
 }


public class ServiceRegistrator
{
public long registerService()
{
    long id = IdGenerator.generateNewId();
    return id;
 }
}

public class IdGenerator
{
  public static long generateNewId()
  {
    return System.currentTimeMillis();
  }
}

Ausnahme:

java.lang.IllegalStateException: no last call on a mock available
at org.easymock.EasyMock.getControlForLastCall(EasyMock.java:521)
at org.easymock.EasyMock.expect(EasyMock.java:499)
at  home.powermock.testServiceRegistrator.testRegistrarService(testServiceRegistrator.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at com.intellij.rt.execution.junit2.JUnitStarter.main(JUnitStarter.java:31)

wie mock staic-Methode,während m mit powerMock
ich verwende intelliJ idea,wie zu beheben Ausnahme.

Ist IdGenerator.generateNewId() eine final Methode? Wenn ja, stackoverflow.com/questions/3494969/... ist eine doppelte. Alternativ haben Sie vielleicht verpasst Aufruf EasyMock.replay.
ich rufe replay-Methode hier wie replay(IdGenerator.class); aber es wurde versäumt hier..
IdGenerator.generateNewId() nicht um eine endgültige Methode.seine einzige statische Methode.

InformationsquelleAutor SachG | 2013-06-25

Schreibe einen Kommentar