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类创建节点和索引,并且可以使用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() | 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类包含断言,这些断言用于在测试时执行一些常规检查。例如,观察此处给出的代码-
SearchResponse seearchResponse = client().prepareSearch(); assertHitCount(searchResponse, 6); assertFirstHit(searchResponse, hasId("6")); assertSearchHits(searchResponse, "1", "2", "3", "4",”5”,”6”);