Elasticsearch提供了一個(gè)jar文件,可以將其添加到任何Java IDE中,并可以用于測(cè)試與Elasticsearch相關(guān)的代碼。使用Elasticsearch提供的框架可以執(zhí)行一系列測(cè)試。在本章中,我們將詳細(xì)討論這些測(cè)試-
單元測(cè)試
整合測(cè)試
隨機(jī)測(cè)試
要開始測(cè)試,您需要將Elasticsearch測(cè)試依賴項(xiàng)添加到您的程序中。您可以將maven用于此目的,并可以在pom.xml中添加以下內(nèi)容。
<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>2.1.0</version> </dependency>
EsSetup已被初始化,以啟動(dòng)和停止Elasticsearch節(jié)點(diǎn)并創(chuàng)建索引。
EsSetup esSetup = new EsSetup();
esSetup.execute() 帶有createIndex的函數(shù)將創(chuàng)建索引,您需要指定設(shè)置,類型和數(shù)據(jù)。
單元測(cè)試是通過使用JUnit和Elasticsearch測(cè)試框架進(jìn)行的。可以使用Elasticsearch類創(chuàng)建節(jié)點(diǎn)和索引,并且可以使用test方法執(zhí)行測(cè)試。ESTestCase和ESTokenStreamTestCase類用于此測(cè)試。
集成測(cè)試使用群集中的多個(gè)節(jié)點(diǎn)。ESIntegTestCase類用于此測(cè)試。有多種方法可以簡(jiǎn)化準(zhǔn)備測(cè)試用例的工作。
序號(hào) | 方法與說明 |
---|---|
1 | refresh() 將刷新群集中的所有索引 |
2 | ensureGreen() 確保綠色健康集群狀態(tài) |
3 | ensureYellow() 確保黃色運(yùn)行狀況群集狀態(tài) |
4 | createIndex(name) 使用傳遞給此方法的名稱創(chuàng)建索引 |
5 | flush() 將刷新群集中的所有索引 |
6 | flushAndRefresh() flush() 和 refresh() |
7 | indexExists(name) 驗(yàn)證指定索引是否存在 |
8 | clusterService() 返回集群服務(wù) java 類 |
9 | cluster() 返回測(cè)試群集類 |
序號(hào) | 方法與說明 |
---|---|
1 | ensureAtLeastNumNodes(n) 確保群集中最多的最小節(jié)點(diǎn)數(shù)大于或等于指定的數(shù)目 |
2 | ensureAtMostNumNodes(n) 確保群集中最多的節(jié)點(diǎn)數(shù)小于或等于指定的數(shù)目 |
3 | stopRandomNode() 停止群集中的隨機(jī)節(jié)點(diǎn) |
4 | stopCurrentMasterNode() 停止主節(jié)點(diǎn) |
5 | stopRandomNonMaster() 停止群集中不是主節(jié)點(diǎn)的隨機(jī)節(jié)點(diǎn) |
6 | buildNode() 創(chuàng)建新節(jié)點(diǎn) |
7 | startNode(settings) 啟動(dòng)新節(jié)點(diǎn) |
8 | nodeSettings() 重寫此方法以更改節(jié)點(diǎn)設(shè)置 |
客戶機(jī)用于訪問集群中的不同節(jié)點(diǎn)并執(zhí)行某些操作。ESIntegTestCase.client()方法用于獲取隨機(jī)客戶端。Elasticsearch還提供了訪問客戶端的其他方法,這些方法可以使用ESIntegTestCase.internalCluster()方法。
序號(hào) | 方法與說明 |
---|---|
1 | iterator() 這有助于您訪問所有可用的客戶端 |
2 | masterClient() 這將返回一個(gè)與主節(jié)點(diǎn)通信的客戶機(jī) |
3 | nonMasterClient() 這將返回一個(gè)客戶端,該客戶端不與主節(jié)點(diǎn)通信 |
4 | clientNodeClient() 這將返回當(dāng)前處于客戶端節(jié)點(diǎn)上的客戶端 |
此測(cè)試用于測(cè)試用戶代碼與所有可能的數(shù)據(jù),以便將來不會(huì)出現(xiàn)任何類型的數(shù)據(jù)失敗。隨機(jī)數(shù)據(jù)是執(zhí)行此測(cè)試的最佳選擇。
在此測(cè)試中,Random類由RandomizedTest提供的實(shí)例實(shí)例化,并提供了許多用于獲取不同類型數(shù)據(jù)的方法。
方法 | 返回值 |
---|---|
getRandom() | Instance of random class |
randomBoolean() | Random boolean |
randomByte() | Random byte |
randomShort() | Random short |
randomInt() | Random integer |
randomLong() | Random long |
randomFloat() | Random float |
randomDouble() | Random double |
randomLocale() | Random locale |
randomTimeZone() | Random time zone |
randomFrom() | Random element from array |
ElasticsearchAssertions和ElasticsearchGeoAssertions類包含斷言,這些斷言用于在測(cè)試時(shí)執(zhí)行一些常規(guī)檢查。例如,觀察此處給出的代碼-
SearchResponse seearchResponse = client().prepareSearch(); assertHitCount(searchResponse, 6); assertFirstHit(searchResponse, hasId("6")); assertSearchHits(searchResponse, "1", "2", "3", "4",”5”,”6”);