English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Elasticsearch는 Java IDE에 추가할 수 있는 jar 파일을 제공하며, Elasticsearch와 관련된 코드를 테스트하는 데 사용할 수 있습니다. Elasticsearch가 제공하는 프레임워크를 사용하여 여러 가지 테스트를 수행할 수 있습니다. 이 장에서는 이러한 테스트에 대해 자세히 논의할 것입니다-
단위 테스트
통합 테스트
랜덤 테스트
테스트를 시작하려면 Elasticsearch 테스트 의존성을 프로그램에 추가해야 합니다. Maven을 사용할 수 있으며 pom.xml에 다음 내용을 추가할 수 있습니다.
<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>2.1.0</version> </dependency>
EsSetup이 초기화되어 Elasticsearch 노드를 시작하고 중지하고 인덱스를 생성하도록 설정되었습니다.
EsSetup esSetup = new EsSetup();
esSetup.execute() 함수는 createIndex를 사용하여 인덱스를 생성하며, 설정, 유형 및 데이터를 지정해야 합니다.
단위 테스트는 JUnit와 Elasticsearch 테스트 프레임워크를 사용하여 수행됩니다. Elasticsearch 클래스를 사용하여 노드와 인덱스를 생성하고 test 메서드를 사용하여 테스트를 수행할 수 있습니다. ESTestCase와 ESTokenStreamTestCase 클래스가 이 테스트에 사용됩니다.
클러스터 내 여러 노드를 사용하여 통합 테스트를 수행합니다. ESIntegTestCase 클래스가 이 테스트에 사용됩니다. 테스트 케이스 준비 작업을 간소화할 수 있는 여러 가지 방법이 있습니다.
순번 | 메서드 및 설명 |
---|---|
1 | refresh() 그룹 내 모든 인덱스를 새로 고침하십시오 |
2 | ensureGreen() 노드의 녹색 건강 클러스터 상태를 보장하십시오 |
3 | ensureYellow() 노드의 노랑 상태 클러스터 상태를 보장하십시오 |
4 | createIndex(name) 이 메서드에 전달된 이름으로 인덱스를 생성하십시오 |
5 | flush() 그룹 내 모든 인덱스를 새로 고침하십시오 |
6 | flushAndRefresh() flush()와 refresh() |
7 | indexExists(name) 지정된 인덱스가 존재하는지 확인하십시오 |
8 | clusterService() 클러스터 서비스 java 클래스를 반환하십시오 |
9 | cluster() 테스트 클러스터 클래스를 반환하십시오 |
순번 | 메서드 및 설명 |
---|---|
1 | ensureAtLeastNumNodes(n) 그룹 내에서 가장 적은 노드 수가 지정된 수보다 크거나 같도록 보장하십시오 |
2 | ensureAtMostNumNodes(n) 그룹 내에서 가장 많은 노드 수가 지정된 수보다 작거나 같도록 보장하십시오 |
3 | stopRandomNode() 그룹 내의 무작위 노드를 중지하십시오 |
4 | stopCurrentMasterNode() 메인 노드를 중지하십시오 |
5 | stopRandomNonMaster() 클러스터에서 주 노드가 아닌 랜덤 노드를 중지합니다 |
6 | buildNode() 새 노드를 생성합니다 |
7 | startNode(settings) 새 노드를 시작합니다 |
8 | nodeSettings() 이 메서드를 재정의하여 노드 설정을 변경합니다 |
클라이언트는 클러스터의 다른 노드에 접근하고 특정 작업을 수행하는 데 사용됩니다. ESIntegTestCase.client() 메서드는 랜덤 클라이언트를 얻기 위해 사용됩니다. Elasticsearch는 또한 ESIntegTestCase.internalCluster() 메서드를 사용하여 클라이언트에 접근할 수 있는 다른 메서드를 제공합니다.
순번 | 메서드 및 설명 |
---|---|
1 | iterator() 이는 모든 사용 가능한 클라이언트에 접근하는 데 도움이 됩니다 |
2 | masterClient() 이는 주 노드와 통신하는 클라이언트를 반환합니다 |
3 | nonMasterClient() 이는 주 노드와 통신하지 않는 클라이언트를 반환합니다 |
4 | clientNodeClient() 이는 현재 클라이언트 노드에 있는 클라이언트를 반환합니다 |
이 테스트는 사용자 코드가 모든 가능한 데이터와 테스트되어 미래에 데이터 유형의 실패가 발생하지 않도록 합니다. 랜덤 데이터는 이 테스트를 수행하는 데 최적입니다.
이 테스트에서 Random 클래스는 RandomizedTest에서 제공하는 인스턴스로 인스턴스화되고, 다양한 데이터 유형을 얻기 위한 많은 메서드를 제공합니다.
메서드 | 반환 값 |
---|---|
getRandom() | 랜덤 클래스의 인스턴스 |
randomBoolean() | 랜덤 보일린 |
randomByte() | 랜덤 바이트 |
randomShort() | 랜덤 셰ort |
randomInt() | 랜덤 인터جر |
randomLong() | 랜덤 로그 |
randomFloat() | 랜덤 플로트 |
randomDouble() | 랜덤 더블 |
randomLocale() | 랜덤 로케일 |
randomTimeZone() | 랜덤 시간대 |
randomFrom() | 배열에서 랜덤 요소 |
ElasticsearchAssertions 및 ElasticsearchGeoAssertions 클래스는 주어진 주어진 코드에서 테스트 중에 일반적인 검사를 수행하는 데 사용되는 주장을 포함하고 있습니다.-
SearchResponse seearchResponse = client().prepareSearch(); assertHitCount(searchResponse, 6); assertFirstHit(searchResponse, hasId("6"); assertSearchHits(searchResponse, "1",\2",\3",\4",\5",\6");