Следует ли тестировать репозитории в приложениях Spring Boot напрямую? - PullRequest
0 голосов
/ 26 февраля 2019

Не уверен, будет ли это считаться «законным вопросом» или «основанным исключительно на мнении», но есть ли «лучшая практика» в отношении непосредственного тестирования хранилища в приложении Spring Boot?Или, если какое-либо интеграционное тестирование просто нацелено на связанную службу?

Причиной этого вопроса является просто тот факт, что по большей части репозиторий в приложении Spring Boot не содержит сгенерированного проектом кода.В лучшем случае он содержит сигнатуры определяемых проектом методов, для которых Spring генерирует реализации (при условии правильных соглашений об именах).

Спасибо ...

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

Исходя из идеи, что репозитории должны использоваться только внутри служб, а службы используются для взаимодействия с другими уровнями системы, я бы сказал, что в большинстве случаев должно быть достаточно служб тестирования.

Я бы не стал тестировать стандартные методы репозитория, такие как findAll или findBy .., они уже были протестированы, и цель состоит не в тестировании JPA, а в приложении.

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

0 голосов
/ 26 февраля 2019

Если вы можете испортить это, вы должны проверить это.Здесь могут возникнуть следующие проблемы:

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

Во всех этих случаях выне тестируя Spring Data JPA, вы тестируете функциональность, реализуемую с помощью Spring Data JPA.

Случаи использования предоставленных методов из коробки , таких как findOne, findAll, save и т. Д., Где нет отпечатков пальцев, не нуждаются в тестировании.

Это легко проверить, и лучше находить ошибки раньше, чем позже.

0 голосов
/ 26 февраля 2019

Да, я думаю, это хорошая практика для этого.Вы можете использовать аннотацию @DataJpaTest, она запускает базу данных в памяти.Официальная документация гласит:

You can use the @DataJpaTest annotation to test JPA applications. By default, it configures an in-memory embedded database, scans for @Entity classes, and configures Spring Data JPA repositories. Regular @Component beans are not loaded into the ApplicationContext.

Ссылка на документы: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...