📅  最后修改于: 2020-10-30 14:24:15             🧑  作者: Mango
Elasticsearch提供了一个jar文件,可以将其添加到任何Java IDE中,并可以用于测试与Elasticsearch相关的代码。使用Elasticsearch提供的框架可以执行一系列测试。在本章中,我们将详细讨论这些测试-
要开始测试,您需要将Elasticsearch测试依赖项添加到程序中。您可以将maven用于此目的,并可以在pom.xml中添加以下内容。
org.elasticsearch
elasticsearch
2.1.0
EsSetup已被初始化,以启动和停止Elasticsearch节点并创建索引。
EsSetup esSetup = new EsSetup();
带有createIndex的esSetup.execute()函数将创建索引,您需要指定设置,类型和数据。
单元测试是通过使用JUnit和Elasticsearch测试框架进行的。可以使用Elasticsearch类创建节点和索引,并且可以使用test方法执行测试。 ESTestCase和ESTokenStreamTestCase类用于此测试。
集成测试使用集群中的多个节点。 ESIntegTestCase类用于此测试。有多种方法可以简化准备测试用例的工作。
S.No | Method & Description |
---|---|
1 |
refresh() All the indices in a cluster are refreshed |
2 |
ensureGreen() Ensures a green health cluster state |
3 |
ensureYellow() Ensures a yellow health cluster state |
4 |
createIndex(name) Create index with the name passed to this method |
5 |
flush() All indices in cluster are flushed |
6 |
flushAndRefresh() flush() and refresh() |
7 |
indexExists(name) Verifies the existence of specified index |
8 |
clusterService() Returns the cluster service java class |
9 |
cluster() Returns the test cluster class |
S.No | Method & Description |
---|---|
1 |
ensureAtLeastNumNodes(n) Ensures minimum number of nodes up in a cluster is more than or equal to specified number. |
2 |
ensureAtMostNumNodes(n) Ensures maximum number of nodes up in a cluster is less than or equal to specified number. |
3 |
stopRandomNode() To stop a random node in a cluster |
4 |
stopCurrentMasterNode() To stop the master node |
5 |
stopRandomNonMaster() To stop a random node in a cluster, which is not a master node. |
6 |
buildNode() Create a new node |
7 |
startNode(settings) Start a new node |
8 |
nodeSettings() Override this method for changing node settings. |
客户端用于访问群集中的不同节点并执行某些操作。 ESIntegTestCase.client()方法用于获取随机客户端。 Elasticsearch还提供了其他方法来访问客户端,并且可以使用ESIntegTestCase.internalCluster()方法来访问这些方法。
S.No | Method & Description |
---|---|
1 |
iterator() This helps you to access all the available clients. |
2 |
masterClient() This returns a client, which is communicating with master node. |
3 |
nonMasterClient() This returns a client, which is not communicating with master node. |
4 |
clientNodeClient() This returns a client currently up on client node. |
该测试用于对所有可能的数据进行用户代码测试,以便将来不会出现任何类型的数据故障。随机数据是执行此测试的最佳选择。
在此测试中,Random类由RandomizedTest提供的实例实例化,并提供了许多用于获取不同类型数据的方法。
Method | Return value |
---|---|
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”);