public class TestStatic {
public static int methodstatic(){
return 3;
}
}
@Test
@PrepareForTest({TestStatic.class})
public class TestStaticTest extends PowerMockTestCase {
public void testMethodstatic() throws Exception {
PowerMockito.mock(TestStatic.class);
Mockito.when(TestStatic.methodstatic()).thenReturn(5);
PowerMockito.verifyStatic();
assertThat("dff",TestStatic.methodstatic()==5);
}
@ObjectFactory
public IObjectFactory getObjectFactory() {
return new org.powermock.modules.testng.PowerMockObjectFactory();
}
}
La excepción:PowerMock clase estática no se burlan
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
Also, this error might show up because:
1. you stub either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
2. inside when() you don't call method on mock but on some other object.
estoy corriendo a través de IntelliJ, el código de la herencia tiene un montón de métodos ...
Alguien tiene idea y fui a través de la tuto oficial, ningún medio para hacer esta sencilla prueba de trabajo
Gracias, sí, no eliges el código heredado :), pero puedes refactorizar ... hacer una simulación estática y aplicar un patrón simulable. – Sam
El código legado acordado es un problema, PowerMock es realmente poderoso en estos casos :) – Brice
Esto simplemente no es cierto: "Además, no debe usar' Mockito.when' si quiere colgar llamadas estáticas ". La página de uso de PowerMockito usa 'Mockito.when' en su código de ejemplo. – ach