탄성검색 Spring boot 통합 테스트
스프링 부츠 통합 테스트에 내장 탄성 검색을 추가하는 방법을 찾고 있습니다.
탄력적인 검색 통합 테스트를 살펴보았지만 스프링 부트와 함께 작동하지 않습니다. 둘 다 다른 테스트 러너를 사용해야 하기 때문입니다.
아래와 같은 수업 테스트가 있습니다. 유감스럽게도 오류가 발생하지 않습니다.
자바.java.java잘못된 상태 예외:스레드에 대한 컨텍스트 정보 없음:스레드[id=1, name=main, state=RUNNABLE, group=main].이 스레드가 com.carrotsearch.randomized testing 클래스에서 실행되고 있습니까?Randomized Runner 컨텍스트?@RunWith(클래스 com.carrotsearch.랜덤 테스트)를 추가합니다.RandomizedRunner.class)를 테스트 클래스에 추가합니다.코드가 @BeforeClass 및 @AfterClass 경계 내의 임의 컨텍스트에 액세스하는지 확인합니다(예: 정적 테스트 클래스 이니셜라이저는 임의 컨텍스트에 액세스할 수 없음).
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = App.class)
@WebAppConfiguration
@IntegrationTest("server.port:0")
public class TestExample extends ElasticsearchIntegrationTest {
TestRestTemplate testRestTemplate = new TestRestTemplate();
@Value("${local.server.port}")
int port;
@Test
public void testOne(){
ResponseEntity<String> results = testRestTemplate.getForEntity(String.format("http://localhost:%d/client/1", port), String.class);
System.out.print(results);
}
}
그들을 어떻게 운영할 것인지 또는 대안이 무엇인지 아는 사람이 있습니까?
실제로 추가적인 탄력적인 검색 테스트 종속성 없이 필요한 작업을 수행할 수 있습니다.이 개념은 기본적으로 포함된 노드를 생성한 다음 를 사용하여 노드와 통신하는 것입니다.
그것을 위해, 나는 나만의 것을 만들었습니다.EmbeddedElasticsearchServer
다음과 같이 보이는 클래스:
public class EmbeddedElasticsearchServer implements InitializingBean {
public EmbeddedElasticsearchServer() {
ImmutableSettings.Builder elasticsearchSettings = ImmutableSettings.settingsBuilder()
.put("http.enabled", "false")
.put("path.data", "target/elasticsearch-data");
node = nodeBuilder()
.local(true)
.settings(elasticsearchSettings.build())
.node();
client = node.client();
}
@Override
public void afterPropertiesSet() throws Exception {
// Initialization stuff:
// - create required indices
// - define mappings
// - populate with test data
}
public Client getClient() {
return client;
}
}
그러면, 스프링 구성에서 (그것을 부르자.integration-test-context.xml
) 다음 작업을 수행:
<bean id="embeddedElasticsearchServer"
class="com.example.EmbeddedElasticsearchServer" />
<bean id="elasticsearchClient"
class="org.elasticsearch.client.node.NodeClient"
factory-bean="embeddedElasticsearchServer"
factory-method="getClient" />
그런 다음 테스트에서 클라이언트를 다음과 같이 자동 배선할 수 있습니다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/integration-test-context.xml")
public abstract class AbstractElasticsearchIntegrationTest {
@Autowired
private Client elasticsearchClient;
// Your rests go here...
}
언급URL : https://stackoverflow.com/questions/30675654/elasticsearch-spring-boot-integration-test
'programing' 카테고리의 다른 글
잘린 역추적 대신 전체 역추적을 인쇄하려면 어떻게 해야 합니까? (0) | 2023.06.23 |
---|---|
VBA에서 트림()과 트림 $()의 차이점은 무엇입니까? (0) | 2023.06.23 |
오류: HTTP 오류 400, 요청에 오류가 있습니다.Firebase Firestore 클라우드 기능 (0) | 2023.06.18 |
Git에 있는 프로젝트의 모든 개발자 나열 (0) | 2023.06.18 |
만료일을 기준으로 중복된 레코드를 선택적으로 삭제하는 SQL (0) | 2023.06.18 |