java - monitorizar - medir hashtag twitter gratis
PowerMock, simula un método estático, ENTONCES llama métodos reales en todas las demás estadísticas. (1)
Estoy configurando burlándose de los métodos estáticos de una clase. Tengo que hacer esto en un método de configuración de JUnit @Before
@Before.
Mi objetivo es configurar la clase para llamar a métodos reales, excepto aquellos métodos que explícitamente me burlo.
Básicamente:
@Before
public void setupStaticUtil() {
PowerMockito.mockStatic(StaticUtilClass.class);
when(StaticUtilClass.someStaticMethod(antString())).thenReturn(5); // mock out certain methods...
// Now have all OTHER methods call the real implmentation??? How do I do this?
}
El problema que estoy encontrando es que dentro de StaticUtilClass
el método public static int someStaticMethod(String s)
desafortunadamente arroja una RuntimeException
si se suministra con un valor null
.
Así que simplemente no puedo seguir la ruta obvia de llamar a métodos reales como la respuesta predeterminada, como se muestra a continuación:
@Before
public void setupStaticUtil() {
PowerMockito.mockStatic(StaticUtilClass.class, CALLS_REAL_METHODS); // Default to calling real static methods
// The below call to someStaticMethod() will throw a RuntimeException, as the arg is null!
// Even though I don''t actually want to call the method, I just want to setup a mock result
when(StaticUtilClass.someStaticMethod(antString())).thenReturn(5);
}
Necesito establecer la Respuesta predeterminada para llamar a métodos reales en todos los demás métodos estáticos después de que me burle de los resultados del método en el que estoy interesado en burlarse.
es posible?
Lo que buscas se llama burla parcial .
En PowerMock puedes usar el método mockStaticPartial .
En PowerMockito puedes usar stubbing, que solo eliminará el método definido y dejará otros sin cambios:
PowerMockito.stub(PowerMockito.method(StaticUtilClass.class, "someStaticMethod")).toReturn(5);
también no te olvides de la
@PrepareForTest(StaticUtilClass.class)