Sombra robolétrica não está funcionando
Estou tentando criar um teste comRobolectric. Meu objetivo é poder substituir a funcionalidade de uma classe (que vem, por exemplo, de uma biblioteca e não consigo modificar o código) de um comportamento personalizado.
Eu criei este pequeno teste para simular o que eu quero fazer:
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowMessenger.class})
public class TestShadow {
@Test
public void testMessenger() {
OriginalMessenger messenger = new OriginalMessenger();
String message = messenger.getMessage();
Assert.assertEquals("Shadow messenger", message);
}
public static class OriginalMessenger {
public String getMessage() {
return "Original messenger";
}
}
@Implements(OriginalMessenger.class)
public static class ShadowMessenger extends OriginalMessenger {
@Implementation
public String getMessage() {
return "Shadow messenger";
}
}
}
No exemplo,OriginalMessenger é a classe que está na biblioteca e fornece uma funcionalidade padrão. EShadowMessenger é a classe que contém o comportamento personalizado que quero aplicar sempre que usarOriginalMessenger.
No entanto, quando executo o teste, ele falha. O conteúdo demensagem é "Mensageiro original". Como se oShadowMessenger nunca foi usado.
O que estou fazendo errado?