Запуск интеграционных тестов Spring с @NoRepositoryBean без реализации @Repository - PullRequest
2 голосов
/ 10 июля 2019

У меня есть ситуация, когда у меня есть несколько модулей, причем основной модуль не зависит от хранилища данных.Существуют дочерние модули, которые зависят от основного модуля с реализациями репозитория для JPA и Mongo.

  • Core-Module - вся бизнес-логика, @NoRepositoryBean интерфейсы
  • Core-Mongo - зависимыена Core-Module с репозиториями / доменом Mongo
  • Core-JPA - зависит от Core-Module с репозиториями / доменом JPA

По сути, я хотел бы иметь интеграциютесты в Core-Module используют базу данных H2 для выполнения тестов и не зависят от реализации @Repository.

Я понимаю, что мог бы создавать @Repository интерфейсы только для тестирования, и это может быть маршрут IЯ должен идти, но мне интересно, есть ли более простой путь.По сути, есть ли способ «создать» экземпляр @NoRepositoryBean в тестах или какой-либо другой простой способ сделать это без необходимости объявлять только тестовые репозитории?

1 Ответ

0 голосов
/ 11 июля 2019

Я только что проверил этот интересный вопрос.Я пометил в своем тестовом проекте UserRepository на @NoRepositoryBean, после чего в тесте я не смог автоматически подключить его.Но в документации spring-docs я нашел описание процесса создания репозиториев Java, и он работает отлично.Непосредственно перед тестированием создайте необходимые репозитории.Пример кода теста:

  private UserRepository userRepository;

  @Autowired
  private EntityManager entityManager;

  @Before
  public void init() {
    JpaRepositoryFactory factory = new JpaRepositoryFactory(entityManager);
    userRepository = factory.getRepository(UserRepository.class);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...