Estoy usando Mockito para mis pruebas de unidad y he codificado un problema con arrojar una excepción en el objeto espía. He hecho esto antes en este objeto (en diferentes casos de prueba y funcionó). Aquí está el código de prueba:Mockito se rehúsa a arrojar una excepción marcada
@Test
public void callInitiated_FsmInitializationException() throws FsmInitializationException, Exception {
MocSbb moc = Mockito.spy(testObj);
MocTracer tracer = Mockito.mock(MocTracer.class);
Mockito.doReturn(tracer).when(moc).getTracer();
CAP2InitialDPArg idp = Mockito.mock(CAP2InitialDPArg.class);
MocFsm mocFsm = Mockito.mock(MocFsm.class);
//Mockito.doReturn(mocFsm).when(moc).getSs7Fsm();
TicketingLocalInterface ticketing = mockTicketingLocalInterface();
CAP2InitialDPArgWrap idpWrap = Mockito.mock(CAP2InitialDPArgWrap.class);
PowerMockito.whenNew(CAP2InitialDPArgWrap.class).withArguments(idp, tracer).thenReturn(idpWrap);
MocSession mocSession = Mockito.mock(MocSession.class);
Mockito.doReturn(mocSession).when(moc).getMocSession();
Mockito.when(moc.getSs7Fsm()).thenThrow(new FsmInitializationException()); ////HERE'S THE PROBLEM
moc.callInitiated(idp);
verify(moc).getFailedFsm();
}
aquí es el método en el que la excepción debe ser desechado:
protected MocFsm getSs7Fsm() throws FsmInitializationException {
mocFsm.setContextProvider(getMocLocalObject());
return mocFsm;
}
el error que consigo durante la ejecución de la prueba es el siguiente:
Testcase: callInitiated_FsmInitializationException(com.nsn.as.ccs.moc.sbb.MocSbbTest): Caused an ERROR
Checked exception is invalid for this method!
Invalid: com.nsn.as.ccs.moc.fsm.FsmInitializationException
org.mockito.exceptions.base.MockitoException:
Checked exception is invalid for this method!
Invalid: com.nsn.as.ccs.moc.fsm.FsmInitializationException
at com.nsn.as.ccs.moc.sbb.MocSbbTest.callInitiated_FsmInitializationException(MocSbbTest.java:1194)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:322)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:309)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:112)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:73)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:297)
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.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:57)
¿El Alguien tiene alguna idea de por qué no funciona en este caso?
No es un duplicado, pero otra pregunta sobre ese tema: http://stackoverflow.com/questions/3762047/throw-checked -exceptions-from-mocks-with-mockito –
Lo he visto, pero no responde mi pregunta. gracias aunque – Edheene
¿Cuál es el tipo de testObj? ¿Es 'MocSbb' o es una súper clase o interfaz? ¿La interfaz/clase padre también declara la excepción? – Bringer128