@Spy
A ideia dessa anotação é que nos permita encapsular a instância de algum objeto existente. De certa forma, é como se ele realmente espionasse algum objeto real.
De uma forma padrão, o Spy irá delegar as chamadas de métodos para esse objeto real e rastrear as chamadas e parâmetros.
Ele é usado em circunstâncias bem mais específicas quando comparado ao @Mock, veja:
Simular comportamento de um método da mesma classe que está sendo testada.
Testes Unitários em sistemas legados.
Atualizado