Isso pode ser feito se você estiver usando o Mockito2, com o novo recurso de incubação que suporta a zombaria das classes e métodos finais.
Pontos principais a serem observados:
1. Crie um arquivo simples com o nome “org.mockito.plugins.MockMaker” e coloque-o em uma pasta chamada “mockito-extensions”. Essa pasta deve ser disponibilizada no caminho de classe.
2. O conteúdo do arquivo criado acima deve ser uma única linha, conforme indicado abaixo:
mock-maker-inline
As duas etapas acima são necessárias para ativar o mecanismo de extensão mockito e usar esse recurso de aceitação.
As classes de amostra são as seguintes: -
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 que ajude.
Artigo completo presente aqui, zombando do imbatível .