Esto se puede hacer si está utilizando Mockito2, con la nueva función de incubación que admite la burla de las clases y métodos finales.
Puntos clave a tener en cuenta:
1. Cree un archivo simple con el nombre "org.mockito.plugins.MockMaker" y colóquelo en una carpeta llamada "mockito-extensiones". Esta carpeta debe estar disponible en el classpath.
2. El contenido del archivo creado anteriormente debe ser una sola línea como se indica a continuación:
simulacro-maker-inline
Los dos pasos anteriores son necesarios para activar el mecanismo de extensión mockito y utilizar esta función de suscripción.
Las clases de muestra son las siguientes: -
FinalClass.java
public final class FinalClass {
public final String hello(){
System.out.println("Final class says Hello!!!");
return "0";
}
}
Foo.java
public class Foo {
public String executeFinal(FinalClass finalClass){
return finalClass.hello();
}
}
FooTest.java
public class FooTest {
@Test
public void testFinalClass(){
// Instantiate the class under test.
Foo foo = new Foo();
// Instantiate the external dependency
FinalClass realFinalClass = new FinalClass();
// Create mock object for the final class.
FinalClass mockedFinalClass = mock(FinalClass.class);
// Provide stub for mocked object.
when(mockedFinalClass.hello()).thenReturn("1");
// assert
assertEquals("0", foo.executeFinal(realFinalClass));
assertEquals("1", foo.executeFinal(mockedFinalClass));
}
}
Espero eso ayude.
Artículo completo presente aquí burlándose de lo inamovible .