Elasticsearch 测试

Elasticsearch提供了一个jar文件,可以添加到任何java IDE中,可以用来测试与Elasticsearch相关的代码。 使用 Elasticsearch 提供的框架可以进行一系列的测试。 在本章中,我们将详细讨论这些测试

  • Unit 测试
  • Integration 测试
  • Randomized 测试

前提条件

要开始测试,我们需要将 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 将创建索引,我们需要指定设置、类型和数据。

单元测试

使用 JUnitElasticsearch 测试框架进行单元测试。 可以使用 Elasticsearch 类创建节点和索引,并且可以使用测试方法来执行测试。 ESTestCaseESTokenStreamTestCase 类用于此测试。

集成测试

集成测试使用集群中的多个节点。 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() 这将返回当前在客户端节点上运行的客户端。

Randomized 测试

这个测试是用每一个可能的数据来测试用户的代码,这样以后任何类型的数据都不会失败。 随机数据是执行此测试的最佳选择。

生成随机数据

在这个测试中,Random 类由 RandomizedTest 提供的实例实例化,并提供了许多方法来获取不同类型的数据。

方法 返回值
getRandom() random 的实例
randomBoolean() 随机布尔值
randomByte() 随机字节
randomShort() 随机短整型数
randomInt() 随机整数
randomLong() 随机长整型数
randomFloat() 随机浮点数
randomDouble() 随机双精度数
randomLocale() 随机语言环境
randomTimeZone() 随机时区
randomFrom() 数组中的随机元素

断言

ElasticsearchAssertionsElasticsearchGeoAssertions 类包含断言,用于在测试时执行一些常见检查。 例如,观察此处给出的代码

SearchResponse seearchResponse = client().prepareSearch();
assertHitCount(searchResponse, 6);
assertFirstHit(searchResponse, hasId("6"));
assertSearchHits(searchResponse, "1", "2", "3", "4",”5”,”6”);

查看笔记

扫码一下
查看教程更方便