@Autowired во время тестирования - PullRequest
1 голос
/ 22 марта 2020

У меня есть вопрос.

@ Аннотация с автоматической проводкой не рекомендуется с Spring Boot 2.x. Тогда я должен использовать конструктор.

enter image description here

, но во время тестирования (JUnit 5) у меня нет никаких предупреждений

enter image description here

Вопросы:

, что означает, что использование @Autowired во время тестирования является хорошей практикой?

Ответы [ 2 ]

2 голосов
/ 22 марта 2020

Каркасы JUnit и Spock (которые на самом деле основаны на JUnit) заставляют тестовые классы иметь только конструкторы без аргументов. Так что это даже недостижимо - возможно, поэтому вас не спросили о потенциальной проблеме.

Тестовые классы не должны быть абстрактными и должны иметь один конструктор.

из документация для junit

Чтобы добавить еще немного к этой статье

Дополнительные плюсы для автоматической сборки конструктора:

  • you может проверить, какой тип компонента вводится, либо с помощью кода, либо с помощью средств отладки, если что-то вдруг перестает работать, как ожидалось.
  • проще создать экземпляр класса для целей тестирования, особенно если он имеет закрытые / защищенные атрибуты, которые должны быть проверены, и вы пишете тесты в чистом виде java.
1 голос
/ 22 марта 2020

вставка поля не рекомендуется для нескольких концепций, большинство из которых связано с использованием класса в других местах, например, экземпляр класса можно создать с помощью конструктора по умолчанию (без аргументов), таким образом, не будет создан со всеми или какими-либо зависимостями

  • , потому что фактический класс может быть создан в других местах, например, в части тестирования кода, которую вы получаете это предупреждение
  • , поскольку класс тестирования обычно не предназначен для создания экземпляров в других частях кода, вы не получите предупреждения, это не значит, все в порядке, это все еще полевая инъекция и все еще не рекомендуется

вы можете прочитать больше об этом здесь

...