Você não pode fazer isso porque de acordo com as especificações, você não pode colocar a mesma anotação duas vezes no mesmo elemento anotado.
Então qual é a solução? A solução é colocar apenas um @RunWith()com o corredor sem o qual você não pode ficar e substituir outro por outra coisa. No seu caso, acho que você removerá MockitoJUnitRunnere fará programaticamente o que ele faz.
Na verdade, a única coisa que ele faz é:
MockitoAnnotations.initMocks(test);
no início do caso de teste. Portanto, a solução mais simples é colocar este código em setUp()método:
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
Não tenho certeza, mas provavelmente você deve evitar várias chamadas desse método usando o sinalizador:
private boolean mockInitialized = false;
@Before
public void setUp() {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
Por melhor que seja, a solução reutilizável pode ser implementada com as regras da JUnt.
public class MockitoRule extends TestWatcher {
private boolean mockInitialized = false;
@Override
protected void starting(Description d) {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
}
Agora basta adicionar a seguinte linha à sua classe de teste:
@Rule public MockitoRule mockitoRule = MockitoJUnit.rule();
e você pode executar este caso de teste com qualquer runner que desejar.