que tienen la clase siguiente:¿Mocking métodos públicos no estáticos en clases abstractas con JMockit?
public abstract class AbstractParent {
static String method() {
return "OriginalOutput";
}
}
Quiero burlarse de este método. Decido usar JMockit. Así se crea una clase de simulacro:
public class MockParent {
static String method() {
return "MOCK";
}
}
Y mi código de prueba se ve así:
public class RealParentTest {
@Before
public void setUp() throws Exception {
Mockit.redefineMethods(AbstractParent.class, MockParent.class);
}
@Test
public void testMethod() {
assertEquals(MockParent.method(),AbstractParent.method());
}
}
Desafortunadamente esta prueba dice que los rendimientos AbstractParent "OriginalOutput" en lugar de "FALSO". ¿Alguna idea de por qué? ¿Estoy haciendo algo mal? Intenté también declarar mi clase falsa como abstracta, sin resultado.
Edite Tenga en cuenta que hacer que el método sea público hace que la prueba se ejecute sin problemas ... esto es extraño porque con JMockit se supone que puede simular métodos de cualquier alcance.
Respuesta Solo el método de prueba debe ser público, puede dejar el método original tal como está.
Solo para el jugador que pasa ... la respuesta aceptada está ahora desactualizada ya que Mockit.redefineMethods está en desuso ... Estoy intentando encontrar el correcto. –