Совершенно нормально использовать Mockito именно таким образом.Но если ваш код становится более сложным, вам нужно сделать еще кое-что, чтобы его тестирование было как можно более простым.
Еще один небольшой пример:
public void eitherAorB() {
if(somethingIsTrue) {
a.doSomething();
} else {
b.doSomethingElse();
}
}
Возможно, вы захотите убедиться,что ожидаемый метод вызывается для ожидаемого объекта.
@Test
public doSomethingShouldBeCalledOnA() {
A a = mock(A.class);
C c = new C(a, new B());
c.setSomeThingIsTrue(true);
eitherAorB();
verify(a).doSomething();
}
@Test
public doSomethingElseShouldBeCalledOnB() {
B b = mock(B.class);
C c = new C(new A(), b);
c.setSomeThingIsTrue(false);
eitherAorB();
verify(b).doSomethingElse();
}
В других случаях вам может потребоваться узнать, какой параметр был передан в метод.Для этого вам нужен ArgumentCaptor.
Или, в некоторых случаях, вам нужно вызвать реальный метод или использовать реальный объект (без подделок), так что пришло время шпионить за объектом и захватывать аргументы или проверять поведение.
Так что в Мокито есть гораздо больше, которые вам могут понадобиться время от времени.