Я уверен, что есть способ избежать использования конструктора с автопроводкой и просто автопроводки поля, однако я использую конструкторы, так как считаю это хорошей практикой.Это также позволяет легко вводить макетированный объект, например
@Mock
MyAction myAction;
MyApi myApi;
ResponseEntity<AuthenticationResponseDto> testResponse = ResponseEntity.ok
(new AuthenticationResponseDto());
@Before
public void setup(){
myApi = new MyApi(myAction);
}
@Test
public void simpleMyApiTestExample (){
when(myAction.login(any())).thenAnswer(i-> testRespone);
ResponseEntity<?> actualResponse = myApi.addAction(new MyDto());
assertThat(actualResponse).isSameAs(testResponse);
}
Просто чтобы дать вам представление.Я только что написал этот пример в текстовом редакторе SO, так что прошу прощения за любые опечатки / ошибки.Но, надеюсь, это показывает, почему наличие конструкторов полезно для тестирования автопроводок.Это позволяет вам макетировать объекты, необходимые для создания экземпляров, добавляя их в конструктор.В этом примере это, вероятно, также применимо к объектам MyDto и AuthenticationResponseDto.