22-二十二、Elasticsearch 教程: 测试
Elasticsearch
还提供了一个 jar
文件,用于测试 Elasticsearch
相关的代码
我们可以将它添加到任何 Java
IDE
中,接着使用 Elasticsearch
提供的框架的进行一系列的测试,例如
1、单元测试
2、集成测试
3、随机测试
开始测试前,我们需要将 Elasticsearch
测试依赖项添加到我们的程序中
如果你使用 maven
来管理项目,那么可以在 pom.xml
中添加以下内容
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.3.0</version>
</dependency>
接着初始化 EsSetup
,然后就可以用它来启动启动和停止 Elasticsearch
节点并创建索引
EsSetup esSetup = new EsSetup();
最后可以调用 esSetup.execute()
方法并传递 createIndex
参数和其它配置、类型、数据等参数来创建索引
单元测试
可以使用 JUnit
和 Elasticsearch
测试框架来运行单元测试
使用 Elasticsearch
类创建节点和索引,并且可以使用 ESTestCase
和 ESTokenStreamTestCase
类来执行测试
集成测试
集成测试需要使用 ESIntegTestCase
类,而且可以使用集群中的多个节点
Elasticsearch 提供了大量的方法用于集成测试
方法 | 说明 |
---|---|
refresh() | 重新更新集群中的所有索引 |
ensureGreen() | 确保集群处于健康的运行状态 |
ensureYellow() | 确保集群处于亚健康的黄色运行状态 |
createIndex(name) | 使用传递的参数name创建一个索引,该索引使用默认配置 |
flush() | 更新集群中的所有索引 |
flushAndRefresh() | 顺序调用flush()和refresh()方法 |
indexExists(name) | 判断name索引是否存在 |
clusterService() | 返回集群服务Java类 |
cluster() | 返回集群测试类 |
提供的用于测试集群的方法
方法 | 说明 |
---|---|
ensureAtLeastNumNodes(n) | 确保集群中的节点数量的最小值大于等于参数n |
ensureAtMostNumNodes(n) | 确保集群中节点数量的最大值是否小于等于参数n |
stopRandomNode() | 随机停止集群中的某个节点 |
stopCurrentMasterNode() | 停止当前主节点 |
stopRandomNonMaster() | 随机停止集群中不是主节点的其它节点 |
buildNode() | 创建一个新的节点 |
startNode(settings) | 使用配置settings开始一个新的节点 |
nodeSettings() | 可以重写该方法来更改节点配置 |
提供的用于访问客户端的方法
客户端用于访问群集中的不同节点并执行某些操作
可以用 ESIntegTestCase.client()
方法随机获取一个客户端
Elasticsearch 还提供了访问客户端的其它方法,可以使用 ESIntegTestCase.internalCluster()
方法的返回值来调用这些方法
方法 | 说明 |
---|---|
iterator() | 用于迭代访问所有的可用客户端 |
masterClient() | 返回一个可以跟主节点进行通讯的客户端 |
nonMasterClient() | 返回一个不可以跟主节点进行通讯的客户端 |
clientNodeClient() | 返回客户端节点中的当前客户端 |
随机测试
如果需要测试用户的代码和每个可能的数据,以便将来使用任何类型的数据都不会失败,那么随机数据是执行此测试的最佳选择
生成随机数据
这种测试方法中,可以使用 RandomizedTest
的实例来实例化一个Random
类的对象,然后通过该对象上的不同方法来获取不同类型的数据
方法 | 返回值 |
---|---|
getRandom() | 随机返回一个类的实例 |
randomBoolean() | 随机返回一个布尔值(boolean) |
randomByte() | 随机返回一个字节数据(byte) |
randomShort() | 随机返回一个短整数(short) |
randomInt() | 随机返回一个整形(integer) |
randomLong() | 随机返回一个长整型(long) |
randomFloat() | 随机返回一个浮点数(float) |
randomDouble() | 随机返回一个双精度浮点数(double) |
randomLocale() | 随机返回一个地区(locale) |
randomTimeZone() | 随机返回一个时区(timezone) |
randomFrom() | 随机返回数组中的一个元素 |
断言 ( Assertions)
ElasticsearchAssertions
和 ElasticsearchGeoAssertions
类包含一些可以在测试时进行常见检查的断言
例如
SearchResponse seearchResponse = client().prepareSearch();
assertHitCount(searchResponse, 6);
assertFirstHit(searchResponse, hasId("6"));
assertSearchHits(searchResponse, "1", "2", "3", "4",”5”,”6”);
希望读者能够给小编留言,也可以点击[此处扫下面二维码关注微信公众号](https://www.ycbbs.vip/?p=28 "此处扫下面二维码关注微信公众号")
看完两件小事
如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:
- 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
- 关注公众号 「方志朋」,公众号后台回复「666」 免费领取我精心整理的进阶资源教程
本文著作权归作者所有,如若转载,请注明出处
转载请注明:文章转载自「 Java极客技术学习 」https://www.javajike.com