Nie możesz tego zrobić, ponieważ zgodnie ze specyfikacją nie możesz umieścić tej samej adnotacji dwa razy na tym samym elemencie z adnotacją.
Więc jakie jest rozwiązanie? Rozwiązaniem jest postawienie tylko jednego @RunWith()
z biegaczem, bez którego nie można się obejść i zastąpienie drugiego czymś innym. W twoim przypadku myślę, że usuniesz MockitoJUnitRunner
i zrobisz programowo to, co robi.
Właściwie jedyne, co robi, to działa:
MockitoAnnotations.initMocks(test);
na początku przypadku testowego. Zatem najprostszym rozwiązaniem jest umieszczenie tego kodu w setUp()
metodzie:
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
Nie jestem pewien, ale prawdopodobnie powinieneś unikać wielokrotnego wywoływania tej metody za pomocą flagi:
private boolean mockInitialized = false;
@Before
public void setUp() {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
Jednak lepsze rozwiązanie wielokrotnego użytku można wdrożyć zgodnie z regułami JUnt.
public class MockitoRule extends TestWatcher {
private boolean mockInitialized = false;
@Override
protected void starting(Description d) {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
}
Teraz po prostu dodaj następujący wiersz do swojej klasy testowej:
@Rule public MockitoRule mockitoRule = MockitoJUnit.rule();
i możesz uruchomić ten przypadek testowy z dowolnym biegaczem.