English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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() | экземпляр случайного класса |
randomBoolean() | случайное логическое значение |
randomByte() | случайный байт |
randomShort() | случайное короткое |
randomInt() | случайное целое |
randomLong() | случайное целое |
randomFloat() | случайное浮-point |
randomDouble() | случайное двойное значение |
randomLocale() | случайный локаль |
randomTimeZone() | случайный часовой пояс |
randomFrom() | случайный элемент из массива |
Классы ElasticsearchAssertions и ElasticsearchGeoAssertions содержат утверждения, которые используются для выполнения некоторых стандартных проверок во время тестирования. Например, наблюдайте за следующим кодом-
SearchResponse seearchResponse = client().prepareSearch(); assertHitCount(searchResponse, 6); assertFirstHit(searchResponse, hasId("6")); assertSearchHits(searchResponse, "1", "2", "3", "4", "5", "6");