#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