У Mockito есть некоторые проблемы с инжекцией в конструктор двух или более полей одного типа. Но он отлично работает, если вы используете сеттерную инъекцию.
Таким образом, вы можете выполнить рефакторинг класса «Отправитель» следующим образом:
public class Sender {
private SomeClass firstField;
private SomeClass secondField;
public void setFirstField(SomeClass firstField) {
this.firstField = firstField;
}
public void setSecondField(SomeClass secondField) {
this.secondField= secondField;
}
}
Помните, что если у класса есть и конструктор, и сеттеры, Mockito выберет конструктор для инъекции и полностью проигнорирует сеттеры.
Редактировать : если вам определенно необходимо использовать конструктор по какой-либо причине, вы всегда можете макетировать поля вместо использования аннотаций Mockito.
Таким образом, в вашем случае Sender останется прежним, а SenderTest будет выглядеть так:
public class SenderTest {
private SomeClass firstField;
private SomeClass secondField;
private Sender sender;
@Before
public void setUp() {
firstField = Mockito.mock(SomeClass.class);
secondField = Mockito.mock(SomeClass.class);
sender = new Sender(firstField, secondField);
}
@Test
public void smokeTest() {
}
}