Elasticsearch提供了一個jar檔案,可以將其新增到任何Java IDE,並可用於測試與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類建立節點和索引,並且在測試方法中可以用來執行測試。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() | 隨機短整型值 |
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」);