Ви не можете цього зробити, тому що відповідно до специфікації ви не можете двічі ставити одну й ту саму примітку на один і той же примітка.
Отже, яке рішення? Рішення полягає в тому, щоб поставити лише одного @RunWith()
з бігуном, без якого ви не можете стояти, а іншого замінити чимось іншим. У вашому випадку я думаю, ви видалите MockitoJUnitRunner
та зробите програмно те, що це робить.
Насправді єдине, що він робить:
MockitoAnnotations.initMocks(test);
на початку тестового випадку. Отже, найпростішим рішенням є введення цього коду в setUp()
метод:
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
Я не впевнений, але, мабуть, вам слід уникати багаторазового виклику цього методу, використовуючи прапор:
private boolean mockInitialized = false;
@Before
public void setUp() {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
Однак краще, багаторазове рішення може бути реалізоване з правилами JUnt.
public class MockitoRule extends TestWatcher {
private boolean mockInitialized = false;
@Override
protected void starting(Description d) {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
}
Тепер просто додайте наступний рядок до свого тестового класу:
@Rule public MockitoRule mockitoRule = MockitoJUnit.rule();
і ви можете запустити цей тестовий випадок з будь-яким бажаним бігуном.