Невозможно внедрить репозиторий в тест для spring-data-elasticsearch

#java #spring-boot #spring-data-elasticsearch

#java #spring-boot #spring-data-elasticsearch

Вопрос:

Невозможно автоматически настроить FooRepository, для него всегда установлено значение null

Config.java класс

 @Configuration
@EnableElasticsearchRepositories(basePackages = "com.foo.repository")
public class Config extends AbstractElasticsearchConfiguration {
  

Тестовый класс

 @SpringIntegrationTest
@ContextConfiguration(classes = { FooRepositoryTest.ConfigTest.class })
public class FooRepositoryTest {

    @Configuration
    @Import({ Config.class })
    @EnableElasticsearchRepositories(basePackages = "com.company.repository")
    static class ConfigTest {}

    @Autowired FooRepository repository;
..
}
  

Комментарии:

1. в каком пакете находится репозиторий?

2. что вы тестируете? Библиотека Sprign Data Elasticsearch или приложение, использующее ее? И вы используете JUnit5?

3. и вы уверены, что используете org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest ?

4. пакет @P.J.Meisch находится в репозитории src, и я использую org.springframework.integration.test.context.SpringIntegrationTest. Я пытаюсь протестировать приложение, которое использует библиотеку Spring Data Elasticsearch для доступа к ES

Ответ №1:

Глядя на документацию по аннотациям, вот как она используется:

 @RunWith(SpringRunner.class)
@SpringIntegrationTest
public class MyIntegrationTests {

  @Autowired
  private MockIntegrationContext mockIntegrationContext;

}
  

В вашем случае аннотация @RunWith(SpringRunner.class) отсутствует

Комментарии:

1. вероятно, это другая @SpringIntegrationTest аннотация

2. @P.J.Meisch Я надеюсь, что он тестирует проект интеграции Spring, потому что это не имеет смысла использовать эту аннотацию в другом контексте.

3. Spring Data Elasticsearch имеет аннотацию org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest , которая используется тестом для самого проекта для запуска теста с TestContainer и контекстом Spring