Вы неправильно используете метод verifyNoMoreInteractions()
. Он должен вызываться внутри каждого теста, который вы хотите проверить.
С другой стороны, @After
предполагается использовать для очистки / закрытия ресурсов, используемых вашими методами испытаний.
Вам нужно пользовательское правило TestWatcher
. Ниже приведен пример такого правила:
public class VerifyNoMoreInteractionsRule extends TestWatcher {
private final List<Object> mocks = new ArrayList<>();
public void add(Object mock){
mocks.add(mock);
}
@Override
protected void succeeded(Description description) {
verifyNoMoreInteractions(mocks.toArray());
}
}
Тогда вы можете использовать его в своих юнит-тестах:
@RunWith(MockitoJUnitRunner.class)
public class VerifyTest {
@Rule
public VerifyNoMoreInteractionsRule noMoreInteractionsRule = new VerifyNoMoreInteractionsRule();
@Mock
private YourMock yourMock;
@Mock
private AnotherMock anotherMock;
@Before
public void setUp(){
// Register the mocks you want to verify after each test
noMoreInteractionsRule.add(yourMock);
noMoreInteractionsRule.add(anotherMock);
}
@Test
public void test(){
// Put your ordinary test code here
}
}
Правило будет применяться к каждому тесту.