cucumber java что это

Заметки программистера

Страницы

Java со вкусом огурчика

Роль модульного тестирования тяжело переоценить, но теория тестирования не стоит на месте. Еще не все успели привыкнуть к хипстерскому понятию TDD, как на всех углах звучит очередное трех-буквенное сокращение BDD. Исчерпывающее описание того, что же такое BDD, можно найти в статье Введение в BDD. В данной статье речь пойдет о фреймворке cucumber, позволяющем наглядно воплотить в жизнь те идеи, которые заложены в тестировании через поведение.

Cucumber

Основой описания сценария тестирования являются шаги, такие как Given, When, Then. Каждому шагу соответствует аннотация, которая с помощью регулярного выражения связывает метод, над которым объявлена, со строкой в текстовом описании сценария.

Шаги тестирования группируются в сценарии (Scenario), которые в свою очередь описывают некоторую функциональность (Feature).

Структура проекта

Интеграция с популярными библиотеками тестирования

Интеграция с JUnit

Интеграция с TestNG

Способы описать параметры

Этот фреймворк предоставляет несколько механизмов описания параметров тестов прямо в текстовом файле.

Обратите внимание на описание сценария, при реализации данного подхода. Вместо ключевого слова Scenario здесь используется Scenario Outline.

На этом функциональность библиотеки не заканчивается и Cucumber предлагает описывать в качестве аргументов целые классы!

Предустановки

Не всем огурцы по нраву.

если вы стремитесь к тому, чтобы вашим фреймворком могли пользоваться даже дебилы, именно они им и будут пользоваться.

Если подходить к пользованию Cucumber с умом и к месту, можно поиметь не мало счастья.

Предложенный автором статьи «Введение в BDD» подход к написанию тестов выглядит действительно многообещающим. Но на практике имена из серии shouldDoSomething очень трудно воспринимаются при чтении кода и требуют достаточно много усилий для того, чтобы понять, какой именно смысл вложен в их название. Немногим лучше обстоят дела в Scala с фреймворком specs2. Но код тестов все еще остается трудно читаемый.
Пример теста на spec2

Замечу, что если речь идет о модульных тестах, которые по своему определению просты и компактны, то использование Cucumber скорее всего будет лишним. Но в случае больших и подчас запутанных функциональных тестов, очень важно, чтобы их сценарии были описаны в простом и строго структурированном виде. И именно здесь Cucumber может проявить себя с лучшей стороны!

Источник

Cucumber java что это

Что пишут в блогах

Стоимость в цвете — 2500 рублей самовывозом (доставка еще 500-600 рублей, информация по ней будет чуть позже)

Заказать — https://shop.testbase.ru/buy/book. Пока самовывоз (см ниже где и когда!!). С почтой разберемся чуть позже.

Где: Кострома / онлайн

2 декабря буду выступать в Костроме. Приходите увидеться очно, или подключайтесь онлайн.

Онлайн-тренинги

Что пишут в блогах (EN)

Blogposts:

Разделы портала

Про инструменты

Автор: Сурин Анатолий, ведущий инженер по тестированию АО «СберТех»

К сожалению, нет магической формулы для разработки высококачественного программного обеспечения, но очевидно, что тестирование улучшает его качество, а автоматизация тестирования улучшает качество самого тестирования.

В данной статье мы рассмотрим один из самых популярных фреймворков для автоматизации тестирования с использованием BDD-подхода – Cucumber. Также посмотрим, как он работает и какие средства предоставляет.

Первоначально Cucumber был разработан Ruby-сообществом, но со временем был адаптирован и для других популярных языков программирования. В данной статье рассмотрим работу Cucumber на языке Java.

Gherkin

BDD тесты – это простой текст, на человеческом языке, написанный в форме истории (сценария), описывающей некоторое поведение.

В Cucumber для написания тестов используется Gherkin-нотация, которая определяет структуру теста и набор ключевых слов. Тест записывается в файл с расширением *.feature и может содержать как один, так и более сценариев.

Рассмотрим пример теста на русском языке с использованием Gherkin:

Как видно из примера, сценарии описаны на простом нетехническом языке, благодаря чему, понимать и писать их может любой участник проекта.

Обратите внимание на структуру сценария:

1. Получить начальное состояние системы;
2. Что-то сделать;
3. Получить новое состояние системы.

В примере жирным выделены ключевые слова. Ниже представлен полный список ключевых слов на русском языке:

Ключевые слова, перечисленные в пунктах 1-5, используются для описания шагов сценария, Cucumber их технически не различает. Вместо них можно использовать символ *, но делать так не рекомендуется. У этих слов есть определенная цель, и они были выбраны именно для неё.

Список зарезервированных символов:

# – обозначает комментарии;
@ – тэгирует сценарии или функционал;
| – разделяет данные в табличном формате;
«»» – обрамляет многострочные данные.

Сценарий начинается со строки # language: ru. Эта строчка указывает Cucumber, что в сценарии используется русский язык. Если её не указать, фреймворк, встретив в сценарии русский текст, выбросит исключение LexingError и тест не запустится. По умолчанию используется английский язык.

Простой проект

Cucumber-проект состоит из двух частей – это текстовые файлы с описанием сценариев (*.feature) и файлы с реализацией шагов на языке программирования (в нашем случае — файлы *.java).

Для создания проекта будем использовать систему автоматизации сборки проектов Apache Maven.
Первым делом добавим cucumber в зависимости Maven:

Для запуска тестов будем использовать JUnit (возможен запуск через TestNG), для этого добавим еще две зависимости:

Библиотека cucumber-junit содержит класс cucumber.api.junit.Cucumber, который позволяет запускать тесты, используя JUnit аннотацию RunWith. Класс, указанный в этой аннотации, определяет каким образом запускать тесты.

Создадим класс, который будет являться точкой входа для наших тестов.

Обратите внимание, название класса должно иметь окончание Test, иначе тесты не будут запускаться.

Рассмотрим опции Cucumber:

исключает тест из списка запускаемых тестов, например

Для фильтрации запускаемых тестов нельзя одновременно использовать опции tags и name.

В папке src/test/features создадим файл с описание тестируемого функционала. Опишем два простых сценария снятия денег со счета — успешный и провальный.

Попробуем запустить RunnerTest со следующими настройками:

В консоль появился результат прохождения теста:

Cucumber не нашел реализацию шагов и предложил свои шаблоны для разработки.
Создадим класс MyStepdefs в пакете ru.savkk.test и перенесем в него методы, предложенные фреймворком:

При запуске теста Cucumber проходит по сценарию шаг за шагом. Взяв шаг, он отделяет ключевое слово от описания шага и пытается найти в Java-классах пакета указанного в опции glue аннотацию с регулярным выражением, подходящим описанию. Найдя совпадение, фреймворк вызывает метод с найденной аннотацией. Если несколько регулярных выражений удовлетворяют описанию шага, фреймворк выбрасывает ошибку.

Как было сказано выше, для Cucumber технически нет отличия в ключевых словах, описывающих шаги, это верно и для аннотации, например:

для фреймворка являются одинаковыми.

То, что в регулярных выражениях записано в скобках передается в метод в виде аргумента. Фреймворк самостоятельно определяет, что необходимо передавать из сценария в метод в виде аргумента. Это числа — (\\d+). И текст, экранированный в кавычки — \»([^\»]*)\». Это самые распространённые из передаваемых аргументов.

Ниже в таблице представлены элементы, используемые в регулярных выражениях:
регулярных выражениях:

Выражение Описание Соответствие
. Один любой символ (за исключение
переноса строки)
Ф
2
j
.* 0 или больше любых символов
(за исключением переноса строки)
Abracadabra
789-160-87

,

.+ Один или больше любых символов
(за исключением переноса строки)
Все, что относилось к
предыдущему, за исключением пустой
строки.
.<2> Любые два символа (за
исключением переноса строки)
Фф
22

JJ
.<1,3> От одного до трех любых
символов (за исключением переноса
строки)
Жжж
Уу
!
^ Якорь начала строки ^aaa соответствует aaa
^aaa соответствует aaabbb
^aaa не соответствует bbbaaa
$ Якорь конца строки aaa$ соответствует aaa
aaa$ не соответствует aaabbb
aaa$ соответствует bbbaaa
\d*
2*
Любое число (или ничего) 12321

Передача коллекций в аргументы

Часто возникает ситуация, когда из сценария в метод необходимо передать набор однотипных данных – коллекций. Для подобной задачи в Cucumber есть несколько решений:

Для замены разделителя, можно воспользоваться аннотацией Delimiter:

DataTable – это класс, который эмулирует табличное представление данных. Для доступа к данным в нем имеется большое количество методов. Рассмотрим некоторые из них:

Конвертирует таблицу в список ассоциативных массивов. Первая строка таблицы используется для именования ключей, остальные как значения:

Данный пример выведет на консоль:

Файл
Редактировать
О программе

Метод преобразует таблицу в список списков:

На консоль будет выведено:

Файл true 5
Редактировать false 8

Этот метод делает то же, что и предыдущий метод, за исключением того, что нельзя определить какого типа данные находятся в таблице, всегда возвращает список строк – List. В качестве аргумента метод принимает номер первой строки:

Метод выведет на консоль:

Редактировать false 8
О программе true 2

Создадим для примера класс Menu:

Для первого способа шаг в сценарии запишем в следующем виде:

Файл true 5
Редактировать false 8
О программе true 2

Фреймворк создает связанный список объектов из таблицы с тремя колонками. В первой строке таблицы должны быть указаны наименования полей класса, создаваемого объекта. Если какое-то поле не указать, оно не будет инициализировано.

Для второго способа приведем шаг сценария к следующему виду:

А в аргументе описания шага используем аннотацию @Transpose.

Cucumber, как и в предыдущем примере, создаст связанный список объектов, но, в данном случае, наименования полей записывается в первой колонке таблицы.

Для передачи многострочных данных в аргумент метода, их необходимо экранировать тремя двойными кавычками:

Данные в метод приходят в виде объекта класса String:

Фреймворк самостоятельно приводит данные из сценария к типу данных, указанному в аргументе метода. Если это невозможно, то выбрасывает исключение ConversionException. Это справедливо и для классов Date и Calendar. Рассмотрим пример:

Все прекрасно сработало, Cucumber преобразовал 04.05.2017 в объект класса Date со значением «Thu May 04 00:00:00 EET 2017».

Рассмотрим еще один пример:

Дойдя до этого шага, Cucumber выбросил исключение:

Почему первый пример сработал, а второй нет?

Дело в том, что в Cucumber встроена поддержка форматов дат чувствительных к текущей локали. Если необходимо записать дату в формате, отличающемся от формата текущей локали, нужно использовать аннотацию Format:

Структура сценария

Бывают случаи, когда необходимо запустить тест несколько раз с различным набором данных, в таких случая на помощь приходит конструкция «Структура сценария»:

Суть данной конструкции заключается в том, что в места, обозначенные символами <>, вставляются данные из таблицы Примеры. Тест будет запускаться поочередно для каждой строки из данной таблицы. Названия колонок должно совпадать с названием мест вставки данных.

Использование хуков

Cucumber поддерживает хуки (hooks) – методы, запускаемые до или после сценария. Для их обозначения используется аннотация Before и After. Класс с хуками должен находиться в пакете, указанном в опциях фреймворка. Пример класса с хуками:

Метод c аннотацией Before будет запускаться перед каждым сценарием, After – после.

Порядок выполнения

Хукам можно задать порядок, в котором они будут выполняться. Для этого необходимо в аннотации указать параметр order. По умолчанию значение order равно 10000.

Для Before чем меньше это значение, тем раньше выполнится метод:

В данном примере первым выполнится метод connectToServer(), затем prepareData().

After отрабатывает в обратном порядке.

Тэгирование

В параметре value можно указать тэги сценариев, для которых будут отрабатывать хуки. Символ

означает «за исключением». Пример:

Метод connectToServer будет выполнен для всех сценариев с тэгом correct, метод prepareData для всех сценариев за исключением сценариев с тэгом fail.

Scenario class

Если в определении метода-хука в аргументе указать объект класса Scenario, то в данном методе можно будет узнать много полезной информации о запущенном сценарии, например:

аутентификация-банковской-карты;успешная-аутентификация
Успешная аутентификация
passed
false
[@correct, @all]

Источник

Записки программера

Страницы

воскресенье, 23 августа 2015 г.

Java со вкусом огурчика

Роль модульного тестирования тяжело переоценить, но теория тестирования не стоит на месте. Еще не все успели привыкнуть к хипстерскому понятию TDD, как на всех углах звучит очередное трех-буквенное сокращение BDD. Исчерпывающее описание того, что же такое BDD, можно найти в статье Введение в BDD. В данной статье речь пойдет о фреймворке cucumber, позволяющем наглядно воплотить в жизнь те идеи, которые заложены в тестировании через поведение.

Cucumber

И связывать их с реализующим их кодом:
Код класса Calculator

Основой описания сценария тестирования являются шаги, такие как Given, When, Then. Каждому шагу соответствует аннотация, которая с помощью регулярного выражения связывает метод, над которым объявлена, со строкой в текстовом описании сценария.

Шаги тестирования группируются в сценарии (Scenario), которые в свою очередь описывают некоторую функциональность (Feature).

Структура проекта

Интеграция с популярными библиотеками тестирования

Cucumber прекрасно интегрируется в существующие библиотеки для запуска тестов, такие как JUnit и TestNG.

Интеграция с JUnit

Для запуска сценариев с помощью JUnit, в проект необходимо добавить зависимость от, собственно, Cucumber-а и библиотеки для его интеграции с JUnit:

Для Cucumber реализован свой org.junit.runner.Runner:

Интеграция с TestNG

Способы описать параметры

Этот фреймворк предоставляет несколько механизмов описания параметров тестов прямо в текстовом файле.

На этом функциональность библиотеки не заканчивается и Cucumber предлагает описывать в качестве аргументов целые классы!
Здесь стоит обратить внимание на то, что видимость полей в классе User не имеет значения, а для его инстанцирования используется хитрая ReflectionFactory, что приводит к тому, что конструктор вызван не будет!.

Предустановки

Не всем огурцы по нраву.

если вы стремитесь к тому, чтобы вашим фреймворком могли пользоваться даже дебилы, именно они им и будут пользоваться.

Если подходить к пользованию Cucumber с умом и к месту, можно поиметь не мало счастья.

Предложенный автором статьи «Введение в BDD» подход к написанию тестов выглядит действительно многообещающим. Но на практике имена из серии shouldDoSomething очень трудно воспринимаются при чтении кода и требуют достаточно много усилий для того, чтобы понять, какой именно смысл вложен в их название. Немногим лучше обстоят дела в Scala с фреймворком specs2. Но код тестов все еще остается трудно читаемый.
Пример теста на spec2

Замечу, что если речь идет о модульных тестах, которые по своему определению просты и компактны, то использование Cucumber скорее всего будет лишним. Но в случае больших и подчас запутанных функциональных тестов, очень важно, чтобы их сценарии были описаны в простом и строго структурированном виде. И именно здесь Cucumber может проявить себя с лучшей стороны!

Источник

Русские Блоги

Введение в Cucumber Framework

Введение огурца

Строительство каркаса огурца

2. Создайте новый проект Java и импортируйте пакет jar, требуемый Cucumber, в проект Java (лучше создать новую папку и поместить в эту папку пакет jar).

3. Добавьте недавно импортированные файлы JAR через Путь сборки.

5. Импортируйте протестированный пакет в проект Java. В этом примере тестируется простой класс Calculator.

6. Создайте новый пакет.Имя пакета должно быть test.java или main.java, иначе при последующих этапах создания шагов определения Cucumber возникнет ошибка.

7. Создайте новый класс Step-Definition в пакете test.java.

Описание файлов, связанных с фреймворком Cucumber, и их содержимого

Определяет шаги теста, включая следующие ключевые слова

BUT home page should not be missing

2. Step-definition файл

Определение шага Cucumber в основном такое же, как и в других файлах формата Java, но вы можете выборочно проверять и автоматически добавлять комментарии Give, When, Then, And, But при создании.

После завершения будет автоматически сгенерирован файл java-шаблона, включающий ранее отмеченные комментарии.В этом примере отмечены флажками Given, When, Then и And. Формат комментария:

@Given(«^you are in Given annotation$»)

3. Файл выполнения теста

Файл выполнения теста Cucumber, как правило, представляет собой пустой тестовый пример Junit, то есть без комментариев к тесту и без комментариев, таких как до и после. Когда необходимо добавить аннотацию RunWith и CucumberOptions.

Аннотации RunWith одинаковы для каждого тестового файла фреймворка Cucumber, так как RunWith(Cucumber.class) 。 Содержимое аннотации CucumberOption необходимо изменить вручную в соответствии с реальной ситуацией.

Параметры аннотации CucumberOptions обычно имеют featuresgluemonochrome с участием dryrun Подождите. среди них. f eature s с участием glue Необходимо, m onochrome с участием dryrun По желанию.

Glue определяет имя пакета Step-difinition в формате glue = «полное имя пакета». например test.java.cucumberDefinition.

Параметр «сухой прогон» временно неизвестен.

Использование рамки Cucumber

Благодаря введению, приведенному выше, в основном создается фреймворк Cucumber, и также понимается роль файлов Cucumber.Следующим шагом является реализация простого модульного теста в режиме BDD путем изменения фреймворка.

Источник

Огурец — краткое руководство

Чтобы получить больше преимуществ от тестирования программного обеспечения, организации в настоящее время делают шаг вперед. Они реализуют важные сценарии приемочных испытаний, пока идет разработка. Этот подход обычно известен как развитие, управляемое поведением (BDD).

Behavior Driven Development дает нам возможность создавать тестовые сценарии как с точки зрения разработчика, так и клиента. Таким образом, вначале разработчики, менеджеры проектов, QA, тестировщики приемлемости пользователей и владелец продукта (акционер) все собрались вместе и обсудили, какие тестовые сценарии следует пройти, чтобы назвать это программное обеспечение / приложение успешным. Таким образом, они предлагают набор тестовых сценариев. Все эти тестовые сценарии написаны на простом английском языке, поэтому они также служат для документации.

пример

Если мы разрабатываем функцию аутентификации пользователя, то ниже может быть несколько ключевых тестовых сценариев, которые необходимо пройти, чтобы назвать его успешным.

Пользователь должен иметь возможность войти в систему с правильным именем пользователя и правильным паролем.

Пользователь не должен иметь возможность войти в систему с неправильным именем пользователя и правильным паролем.

Пользователь не должен иметь возможность войти в систему с правильным именем пользователя и неправильным паролем.

Пользователь должен иметь возможность войти в систему с правильным именем пользователя и правильным паролем.

Пользователь не должен иметь возможность войти в систему с неправильным именем пользователя и правильным паролем.

Пользователь не должен иметь возможность войти в систему с правильным именем пользователя и неправильным паролем.

Как это устроено

К тому времени, когда код готов, тестовые сценарии тоже готовы. Код должен пройти тестовые сценарии, определенные в BDD. Если этого не произойдет, потребуется рефакторинг кода. Код блокируется только после успешного выполнения определенных тестовых сценариев.

Это очень простое понятие, но то, что нам нужно для реализации этой концепции. Ответ таков: структура, управляемая поведением (BDD). Cucumber — один из таких инструментов с открытым исходным кодом, который поддерживает разработку, основанную на поведении. Чтобы быть более точным, Cucumber может быть определен как структура тестирования, основанная на простом английском тексте. Он служит документацией, автоматизированными тестами и средством разработки — все в одном.

Так что же делает огурец? Это может быть описано в следующих шагах —

Огурец читает код, написанный простым английским текстом (язык Gherkin — будет представлен позже в этом руководстве) в файле возможностей (будет представлен позже).

Он находит точное соответствие каждого шага в определении шага (файл кода — подробности предоставлены позже в руководстве).

Куском кода, который должен быть выполнен, могут быть различные программные среды, такие как Selenium, Ruby on Rails и т. Д. Не каждый инструмент среды BDD поддерживает каждый инструмент.

Это стало причиной популярности Cucumber среди других фреймворков, таких как JBehave, JDave, Easyb и т. Д.

Cucumber поддерживает более десятка различных программных платформ, таких как —

Преимущества огурца перед другими инструментами

Cucumber поддерживает разные языки, такие как Java.net и Ruby.

Он действует как мост между деловым и техническим языком. Мы можем сделать это, создав тестовый пример в простом английском тексте.

Он позволяет писать тестовый скрипт без знания какого-либо кода, он также позволяет привлекать и непрограммистов.

В отличие от других инструментов, он служит целям комплексной среды тестирования.

Благодаря простой архитектуре тестового сценария, Cucumber обеспечивает повторное использование кода.

Cucumber поддерживает разные языки, такие как Java.net и Ruby.

Он действует как мост между деловым и техническим языком. Мы можем сделать это, создав тестовый пример в простом английском тексте.

Он позволяет писать тестовый скрипт без знания какого-либо кода, он также позволяет привлекать и непрограммистов.

В отличие от других инструментов, он служит целям комплексной среды тестирования.

Благодаря простой архитектуре тестового сценария, Cucumber обеспечивает повторное использование кода.

Огурец — Окружающая среда

В этой главе мы увидим настройку среды для Cucumber с Selenium WebDriver и Java на Windows Machine.

Предварительные условия для настройки среды

Ниже приведены предварительные условия, необходимые для настройки —

Джава

Зачем нам нужно — Java — это надежный язык программирования. Cucumber поддерживает платформу Java для выполнения.

Шаг 2 — Примите лицензионное соглашение.

Шаг 3 — Установите JDK и JRE.

Шаг 4 — Установите переменную среды, как показано на следующих скриншотах.

Затмение

Зачем нам это нужно — Eclipse — интегрированная среда разработки (IDE). Он содержит базовое рабочее пространство и расширяемую систему плагинов для настройки среды.

Шаг 1 — Убедитесь, что на вашем компьютере установлена ​​JAVA.

Шаг 3 — Распакуйте и Eclipse установлен.

специалист

Зачем нам это нужно — Maven — это инструмент автоматизации сборки, используемый в основном для проектов Java. Он предоставляет общую платформу для выполнения таких действий, как генерация исходного кода, компиляция кода, упаковка кода в jar и т. Д. Позже, если какая-либо из версий программного обеспечения изменяется, Maven предоставляет простой способ соответствующим образом изменить тестовый проект.

Шаг 2 — Распакуйте файл и запомните местоположение.

Шаг 3 — Создайте переменную окружения MAVEN_HOME, как показано на следующем снимке экрана.

Шаг 4 — Редактируйте переменную Path и включите Maven, как показано на следующем снимке экрана.

Шаг 5 — Загрузите плагин MAVEN из Eclipse.

Шаг 6 — Откройте Eclipse.

Шаг 7 — Перейдите в Справка → Торговая площадка Eclipse → Поиск Maven → Интеграция Maven для Eclipse → INSTALL.

Настройте огурец с Maven

Шаг 1 — Создайте проект Maven.

Перейдите в Файл → Создать → Другие → Maven → Проект Maven → Далее.

Укажите идентификатор группы (идентификатор группы будет идентифицировать ваш проект однозначно во всех проектах).

Укажите идентификатор артефакта (идентификатор артефакта — это имя банки без версии. Вы можете выбрать любое имя, которое находится в нижнем регистре). Нажмите на Готово.

Перейдите в Файл → Создать → Другие → Maven → Проект Maven → Далее.

Укажите идентификатор группы (идентификатор группы будет идентифицировать ваш проект однозначно во всех проектах).

Укажите идентификатор артефакта (идентификатор артефакта — это имя банки без версии. Вы можете выбрать любое имя, которое находится в нижнем регистре). Нажмите на Готово.

Шаг 2 — Откройте pom.xml.

Перейдите к исследователю пакетов в левой части Eclipse.

Щелкните правой кнопкой мыши и выберите опцию, откройте «Текстовый редактор».

Перейдите к исследователю пакетов в левой части Eclipse.

Щелкните правой кнопкой мыши и выберите опцию, откройте «Текстовый редактор».

Шаг 3 — Добавить зависимость для селена: это будет указывать Maven, какие файлы Selenium JAR должны быть загружены из центрального хранилища в локальное хранилище.

Откройте pom.xml в режиме редактирования, создайте тег зависимостей ( ) внутри тега проекта.

Внутри тега зависимости создайте тег зависимости ( ).

Укажите следующую информацию в теге зависимости.

Откройте pom.xml в режиме редактирования, создайте тег зависимостей ( ) внутри тега проекта.

Внутри тега зависимости создайте тег зависимости ( ).

Укажите следующую информацию в теге зависимости.

Шаг 4. Добавление зависимости для Cucumber-Java: это будет указывать Maven, какие файлы Cucumber должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости

Шаг 5. Добавление зависимости для Cucumber-JUnit: это будет указывать Maven, какие файлы Cucumber JUnit следует загружать из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости

Шаг 6 — Добавьте зависимость для JUnit: это будет указывать Maven, какие файлы JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

Шаг 7 — Проверьте двоичные файлы.

После успешного редактирования pom.xml сохраните его.

Перейдите в Проект → Очистить — это займет несколько минут.

После успешного редактирования pom.xml сохраните его.

Перейдите в Проект → Очистить — это займет несколько минут.

Вы сможете увидеть репозиторий Maven, как показано на следующем скриншоте.

Создайте файл объектов (будет рассмотрен позже).

Создайте файл определения шага (будет рассмотрен позже).

Создайте JUnit Runner для запуска теста (будет рассмотрено позже).

Создайте файл объектов (будет рассмотрен позже).

Создайте файл определения шага (будет рассмотрен позже).

Создайте JUnit Runner для запуска теста (будет рассмотрено позже).

Огурец — корнишоны

Можно подумать, что много раз обсуждалось, что Cucumber поддерживает простой английский текст, тогда почему нам нужен отдельный язык — корнишоны. Ответ лежит в концепции развития, управляемого поведением.

Как обсуждалось ранее, мы видели, что BDD включает различные перспективы при создании тестовых сценариев. Это может быть перспектива развития, бизнес-перспективы и т. Д. При этом нам понадобятся люди из разных сообществ, такие как разработчики, менеджеры проектов, владельцы продуктов и тестировщики при разработке сценариев тестирования. Поскольку эти люди не принадлежат к одной и той же категории, существует риск не использовать общий язык для концептуализации тестового сценария. Это было точкой эволюции для корнишонов.

Gherkin предоставляет общий набор ключевых слов в тексте на английском языке, который может использоваться людьми из разных сообществ и в то же время получать тот же результат в форме тестовых сценариев.

пример

Особенность — Функциональность входа для сайта социальной сети. Учитывая, что я пользователь социальной сети. Когда я ввожу имя пользователя как username1. И я ввожу пароль как пароль1. Тогда я должен быть перенаправлен на домашнюю страницу сайта.

Вышеупомянутый сценарий имеет функцию, называемую логин пользователя. Все слова, выделенные жирным шрифтом, являются ключевыми словами корнишона.

Пример нескольких других ключевых слов —

Огурец проанализирует каждый шаг, записанный в файле определения шага (будет рассмотрен позже). Таким образом, шаги, упомянутые в файле возможностей и файле определения шагов (будут рассмотрены позже), должны совпадать.

Вы можете найти банки с корнишонами в папке Maven Dependency в Package Explorer. Он загружается вместе с другими банками огурца. Это будет похоже на следующий скриншот —

Еще один интересный факт о корнишоне — он поддерживает не только английский, но и многие другие родные языки, такие как французский, финский, индонезийский, венгерский, хинди, урду, гуджарати и т. Д.

Огурец — Особенности

Функция может быть определена как отдельная единица или функциональность проекта. Давайте рассмотрим очень распространенный пример сайта социальной сети. Как выглядит особенность этого продукта / проекта? Несколько основных функций могут быть определены как —

Создайте и удалите пользователя из социальной сети.

Функциональность входа пользователя на сайт социальной сети.

Обмен фотографиями или видео на сайте социальной сети.

Отправка запроса на добавление в друзья.

Создайте и удалите пользователя из социальной сети.

Функциональность входа пользователя на сайт социальной сети.

Обмен фотографиями или видео на сайте социальной сети.

Отправка запроса на добавление в друзья.

К настоящему времени ясно, что каждая независимая функциональность тестируемого продукта может быть названа как особенность, когда мы говорим о Cucumber. Позднее, когда вы начнете тестирование, рекомендуется, чтобы перед созданием тестовых сценариев мы определили функции, подлежащие тестированию.

Ключевое слово для представления тестируемой функции в Gherkins — «Feature». Рекомендуется написать небольшое описание функции под названием функции в файле функций. Это также удовлетворит потребность в хорошей документации.

пример

Особенность — Функциональность входа для сайта социальной сети.

Пользователь должен иметь возможность войти на сайт социальной сети, если имя пользователя и пароль верны.

Пользователю должно отображаться сообщение об ошибке, если имя пользователя и пароль неверны.

Пользователь должен перейти на домашнюю страницу, если имя пользователя и пароль верны.

Файлы функций

Файл, в котором написаны тесты Cucumber, известен как файлы компонентов. Желательно, чтобы для каждой тестируемой функции был отдельный файл. Расширение файла функции должно быть «.feature».

Можно создать столько файлов объектов, сколько необходимо. Чтобы иметь организованную структуру, у каждого объекта должен быть один файл объектов.

Sr.No Особенность Имя файла функции
1 Логин пользователя userLogin.feature
2 Поделиться постом sharePost.feature
3 Создать учетную запись createAccount.feature
4 Удалить аккаунт deleteAccount.feature

Соглашение об именах, которое будет использоваться для имени функции, имени файла функции, зависит от выбора человека. В огурцах нет основного правила об именах.

Простой файл функций состоит из следующих ключевых слов / частей —

Feature — Название тестируемой функции.

Описание (необязательно). Опишите тестируемую функцию.

Сценарий — что такое тестовый сценарий.

Дано — Предварительное условие перед выполнением шагов теста.

Когда — конкретное условие, которое должно соответствовать, чтобы выполнить следующий шаг.

Затем — Что должно произойти, если условие, указанное в КОГДА, удовлетворяется.

Feature — Название тестируемой функции.

Описание (необязательно). Опишите тестируемую функцию.

Сценарий — что такое тестовый сценарий.

Дано — Предварительное условие перед выполнением шагов теста.

Когда — конкретное условие, которое должно соответствовать, чтобы выполнить следующий шаг.

Затем — Что должно произойти, если условие, указанное в КОГДА, удовлетворяется.

пример

ОсобенностьВход пользователя в социальную сеть.

Пользователь должен иметь возможность войти на сайт социальной сети, когда имя пользователя и пароль верны.

Пользователю должно отображаться сообщение об ошибке, если имя пользователя и пароль неверны.

Пользователь должен перейти на домашнюю страницу, если имя пользователя и пароль верны.

Схема — Функциональность входа для сайта социальной сети.

Данный пользователь переходит на Facebook. Когда я ввожу имя пользователя как « » и пароль как « ». Тогда логин должен быть неудачным.

Нет логических подробностей, записанных в файле возможностей.

Определения шагов

У нас есть готовый файл функций с определенными тестовыми сценариями. Тем не менее, это еще не все сделано. Огурец на самом деле не знает, какой фрагмент кода должен быть выполнен для какого-либо конкретного сценария, описанного в файле возможностей.

Это вызывает необходимость в промежуточном файле определения шага. Файл определения шагов хранит отображение между каждым шагом сценария, определенным в файле объектов, с кодом выполняемой функции.

Итак, теперь, когда Cucumber выполняет шаг сценария, упомянутого в файле возможностей, он сканирует файл определения шага и выясняет, какую функцию нужно вызвать.

Пример файла определения шага

Таким образом, для каждой функции, независимо от того, какой код вы хотите выполнить на каждом шаге теста (например, GIVEN / THEN / WHEN), вы можете написать его в файле определения шага. Убедитесь, что код / ​​функция была определена для каждого из шагов.

Эта функция может быть функцией Java, где мы можем использовать команды Java и Selenium для автоматизации наших этапов тестирования.

Огурец — Сценарии

Сценарий является одной из основных структур корнишона. Каждый сценарий начинается с ключевого слова «Сценарий:» (или локализованного) и сопровождается необязательным заголовком сценария. Каждая функция может иметь один или несколько сценариев, и каждый сценарий состоит из одного или нескольких этапов. Очень простой пример сценария может быть —

Сценарий — проверка функциональности справки.

Данный пользователь переходит на Facebook.

Когда пользователь нажимает кнопку Справка, открывается страница справки.

Рассмотрим случай, когда нам нужно выполнить тестовый сценарий более одного раза. Предположим, нам нужно убедиться, что функция входа в систему работает для всех типов подписчиков. Это требует выполнения сценария функциональности входа в систему несколько раз. Скопируйте и вставьте те же шаги, чтобы просто повторно выполнить код, не кажется разумной идеей. Для этого Огурец предоставляет еще одну структуру — схему сценария.

Схема сценария аналогична структуре сценария; Единственная разница заключается в предоставлении нескольких входов. Как вы можете видеть в следующем примере, контрольный пример остается тем же и не повторяемым. Внизу мы предоставили несколько входных значений для переменных «Имя пользователя» и «Пароль». Во время выполнения фактического теста Cucumber заменит переменную на введенные значения и выполнит тест. После выполнения pass-1 тест будет перезапущен для второй итерации с другим входным значением. Такая переменная или заполнители могут быть представлены знаком «<>» при упоминании в выражениях корнишона.

пример

Схема сценария — Функциональность входа для сайта социальной сети. Данный пользователь переходит на Facebook.

Когда пользователь входит в систему, используя имя пользователя как « » и пароль как « », то вход должен быть успешным.

Есть несколько советов и приемов, чтобы правильно определить сценарии Cucumber.

Каждый шаг должен быть четко определен, чтобы он не создавал путаницы для читателя.

Не повторяйте сценарий тестирования, если необходимо, используйте схему сценария для реализации повторения.

Разработайте шаг теста таким образом, чтобы его можно было использовать в нескольких сценариях и набросках сценариев.

Насколько это возможно, держите каждый шаг полностью независимым. Например: «Данный пользователь вошел в систему». Это можно разделить на два этапа

Каждый шаг должен быть четко определен, чтобы он не создавал путаницы для читателя.

Не повторяйте сценарий тестирования, если необходимо, используйте схему сценария для реализации повторения.

Разработайте шаг теста таким образом, чтобы его можно было использовать в нескольких сценариях и набросках сценариев.

Насколько это возможно, держите каждый шаг полностью независимым. Например: «Данный пользователь вошел в систему». Это можно разделить на два этапа

Огурец — Аннотации

Аннотация — это предопределенный текст, который имеет определенное значение. Это позволяет компилятору / интерпретатору знать, что нужно делать после выполнения. Огурец получил следующие несколько аннотаций —

Он описывает предварительные условия для теста, который будет выполнен.

Пример — ПОДАРОК ​​Я пользователь Facebook

Он определяет точку запуска для выполнения любого тестового сценария.

Пример — КОГДА я ввожу « »

Затем содержит ожидаемый результат для теста, который будет выполнен.

Пример — ТОГДА логин должен быть успешным.

Он обеспечивает логическое условие И между любыми двумя операторами. И может использоваться в сочетании с инструкциями GIVEN, WHEN и THEN.

Пример — КОГДА я ввожу свой « » И я вводю свой « »

Это означает логическое условие ИЛИ между любыми двумя утверждениями. ИЛИ может использоваться вместе с инструкциями GIVEN, WHEN и THEN.

Пример — ТОГДА логин должен быть успешным. НО домашняя страница не должна отсутствовать.

Подробная информация о сценарии в тесте должна быть зафиксирована после ключевого слова «Сценарий:»

ПОДАРОК ​​Я пользователь Facebook

ТОГДА логин должен быть успешным.

НО домашняя страница не должна отсутствовать.

План сценария — (будет рассмотрен позже)

Примеры — (будет рассмотрено позже)

Фон обычно содержит инструкцию о том, что настраивать перед выполнением каждого сценария. Однако он выполняется после хука «До» (будет рассмотрен позже). Так что это идеально подходит для кода, когда мы хотим настроить веб-браузер или установить соединение с базой данных.

Перейти на домашнюю страницу Facebook.

Он описывает предварительные условия для теста, который будет выполнен.

Пример — ПОДАРОК ​​Я пользователь Facebook

Он определяет точку запуска для выполнения любого тестового сценария.

Пример — КОГДА я ввожу « »

Затем содержит ожидаемый результат для теста, который будет выполнен.

Пример — ТОГДА логин должен быть успешным.

Он обеспечивает логическое условие И между любыми двумя операторами. И может использоваться в сочетании с инструкциями GIVEN, WHEN и THEN.

Пример — КОГДА я ввожу свой « » И я вводю свой « »

Это означает логическое условие ИЛИ между любыми двумя утверждениями. ИЛИ может использоваться вместе с инструкциями GIVEN, WHEN и THEN.

Пример — ТОГДА логин должен быть успешным. НО домашняя страница не должна отсутствовать.

Подробная информация о сценарии в тесте должна быть зафиксирована после ключевого слова «Сценарий:»

ПОДАРОК ​​Я пользователь Facebook

ТОГДА логин должен быть успешным.

НО домашняя страница не должна отсутствовать.

План сценария — (будет рассмотрен позже)

Примеры — (будет рассмотрено позже)

Фон обычно содержит инструкцию о том, что настраивать перед выполнением каждого сценария. Однако он выполняется после хука «До» (будет рассмотрен позже). Так что это идеально подходит для кода, когда мы хотим настроить веб-браузер или установить соединение с базой данных.

Перейти на домашнюю страницу Facebook.

Пример сценария

Давайте автоматизируем сценарий, чтобы лучше понимать аннотации.

Перейдите в Файл → Создать → Другие → Maven → Проект Maven → Далее.

Укажите идентификатор группы (идентификатор группы будет идентифицировать ваш проект однозначно во всех проектах).

Укажите идентификатор артефакта (идентификатор артефакта — это имя банки без версии. Вы можете выбрать любое имя в нижнем регистре).

Перейдите к исследователю пакетов в левой части Eclipse.

Разверните проект AnnotationTest.

Найдите файл pom.xml.

Щелкните правой кнопкой мыши и выберите опцию Открыть с помощью «Текстового редактора».

Добавить зависимость для Selenium — это будет указывать Maven, какие файлы jar Selenium следует загружать из центрального хранилища в локальное хранилище.

Откройте файл pom.xml в режиме редактирования, создайте тег зависимостей ( ) внутри тега проекта.

Внутри тега зависимости создайте тег зависимости ( ).

Укажите следующую информацию в теге зависимости.

Перейдите в Файл → Создать → Другие → Maven → Проект Maven → Далее.

Укажите идентификатор группы (идентификатор группы будет идентифицировать ваш проект однозначно во всех проектах).

Укажите идентификатор артефакта (идентификатор артефакта — это имя банки без версии. Вы можете выбрать любое имя в нижнем регистре).

Перейдите к исследователю пакетов в левой части Eclipse.

Разверните проект AnnotationTest.

Найдите файл pom.xml.

Щелкните правой кнопкой мыши и выберите опцию Открыть с помощью «Текстового редактора».

Добавить зависимость для Selenium — это будет указывать Maven, какие файлы jar Selenium следует загружать из центрального хранилища в локальное хранилище.

Откройте файл pom.xml в режиме редактирования, создайте тег зависимостей ( ) внутри тега проекта.

Внутри тега зависимости создайте тег зависимости ( ).

Укажите следующую информацию в теге зависимости.

Добавить зависимость для Cucumber-Java — это будет указывать Maven, какие файлы Cucumber должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Предоставьте следующую информацию в теге зависимостей.

Добавить зависимость для Cucumber-Java — это будет указывать Maven, какие файлы Cucumber должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Предоставьте следующую информацию в теге зависимостей.

Добавить зависимость для Cucumber-JUnit — это будет указывать Maven, какие файлы Cucumber JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

Добавить зависимость для Cucumber-JUnit — это будет указывать Maven, какие файлы Cucumber JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

Добавить зависимость для JUnit — это будет указывать Maven, какие файлы JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

Добавить зависимость для JUnit — это будет указывать Maven, какие файлы JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

Проверьте двоичные файлы.

После успешного редактирования pom.xml сохраните его.

Перейдите в Проект → Очистить — это займет несколько минут.

Проверьте двоичные файлы.

После успешного редактирования pom.xml сохраните его.

Перейдите в Проект → Очистить — это займет несколько минут.

Создайте пакет с именем Annotation в src / test / java

Выберите недавно созданный проект.

Щелкните правой кнопкой мыши и выберите «Новый».

Выберите опцию «Пакет».

Назовите это как «Аннотация».

Выберите недавно созданный проект.

Щелкните правой кнопкой мыши и выберите «Новый».

Выберите опцию «Пакет».

Назовите это как «Аннотация».

Выберите и щелкните правой кнопкой мыши на схеме пакета.

Нажмите на «Новый» файл.

Запишите следующий текст в файл и сохраните его.

Выберите и щелкните правой кнопкой мыши на схеме пакета.

Нажмите на «Новый» файл.

Запишите следующий текст в файл и сохраните его.

Создайте файл определения шага.

Выберите и щелкните правой кнопкой мыши на схеме пакета.

Нажмите на «Новый» файл.

Дайте имя файла как annotation.java

Запишите следующий текст в файл и сохраните его.

Выберите и щелкните правой кнопкой мыши на схеме пакета.

Нажмите на «Новый» файл.

Дайте имя файла как annotation.java

Запишите следующий текст в файл и сохраните его.

Создайте файл класса бегуна.

Выберите и щелкните правой кнопкой мыши на схеме пакета.

Нажмите на «Новый» файл.

Дайте файлу имя, например, runTest.java

Запишите следующий текст в файл и сохраните его.

Выберите и щелкните правой кнопкой мыши на схеме пакета.

Нажмите на «Новый» файл.

Дайте файлу имя, например, runTest.java

Запишите следующий текст в файл и сохраните его.

Запустите тест, используя опцию —

Выберите файл runTest.java из проводника пакетов.

Щелкните правой кнопкой мыши и выберите параметр «Запуск от имени».

Выберите JUnit test.

Выберите файл runTest.java из проводника пакетов.

Щелкните правой кнопкой мыши и выберите параметр «Запуск от имени».

Выберите JUnit test.

При запуске этого файла класса вы увидите следующее:

Facebook открывается в новом экземпляре браузера Firefox.

TOM будет передан в качестве ввода в поле имени пользователя.

Джерри будет передан в качестве ввода в поле пароля.

В браузере появится сообщение о неудачном входе в систему.

В консоли вы увидите напечатанный «Test Pass»

Шаг с 1 по 5. Будет повторен для имени пользователя как «» и пароля как «».

Facebook открывается в новом экземпляре браузера Firefox.

TOM будет передан в качестве ввода в поле имени пользователя.

Джерри будет передан в качестве ввода в поле пароля.

В браузере появится сообщение о неудачном входе в систему.

В консоли вы увидите напечатанный «Test Pass»

Шаг с 1 по 5. Будет повторен для имени пользователя как «» и пароля как «».

Огурец — набросок сценария

Схема сценария в основном заменяет переменную / ключевые слова значением из таблицы. Каждая строка в таблице считается сценарием.

Давайте продолжим с тем же примером функции входа в Facebook. До сих пор мы выполняли один сценарий: после предоставления правильного имени пользователя вход в систему прошел успешно. Теперь предположим, что мы хотим проверить успешность входа в систему для всех трех возможных типов ввода: имени пользователя, адреса электронной почты или номера телефона. Чтобы достичь этого, нам нужно написать три разных сценария, где каждый сценарий будет варьироваться в зависимости от типа ввода, вход в систему успешен. В этом случае сценарии будут выглядеть следующим образом.

Данный пользователь переходит на Facebook

Когда я ввожу правильное имя пользователя и пароль

Тогда вход должен быть успешным

Данный пользователь переходит на Facebook

Когда я ввожу правильный адрес электронной почты и пароль

Тогда вход должен быть успешным

Данный пользователь переходит на Facebook

Когда я ввожу правильный номер телефона и пароль

Тогда вход должен быть успешным

Здесь, если мы посмотрим ближе, для вышеупомянутых трех сценариев: операторы одинаковы, изменяется только входной параметр (имя пользователя / адрес электронной почты / номер телефона). Вот где важность набросков сценария вступает в картину.

Когда мы определяем любой сценарий со схемой сценария, мы можем указать один тестовый сценарий, и в нижней части мы можем предоставить несколько входных данных. Сценарий будет выполнен столько раз, сколько предоставлено входов.

пример

Давайте создадим пример схемы сценария —

Шаг 1 — Создайте тестовый проект Maven с именем ScenarioOutlineTest

Перейдите в Файл → Создать → Другие → Maven → Проект Maven → Далее.

Укажите идентификатор группы (идентификатор группы будет идентифицировать ваш проект однозначно во всех проектах).

Укажите идентификатор артефакта (идентификатор артефакта — это имя банки без версии. Вы можете выбрать любое имя в нижнем регистре).

Перейдите к исследователю пакетов в левой части Eclipse.

Разверните проект CucumberTest.

Найдите файл pom.xml.

Щелкните правой кнопкой мыши и выберите опцию Открыть с помощью «Текстового редактора».

Добавить зависимость для Selenium — это будет указывать Maven, какие файлы jar Selenium следует загружать из центрального хранилища в локальное хранилище.

Откройте файл pom.xml в режиме редактирования, создайте тег зависимостей ( ) внутри тега проекта.

Внутри тега зависимости создайте тег зависимости ( ).

Укажите следующую информацию в теге зависимости.

Перейдите в Файл → Создать → Другие → Maven → Проект Maven → Далее.

Укажите идентификатор группы (идентификатор группы будет идентифицировать ваш проект однозначно во всех проектах).

Укажите идентификатор артефакта (идентификатор артефакта — это имя банки без версии. Вы можете выбрать любое имя в нижнем регистре).

Перейдите к исследователю пакетов в левой части Eclipse.

Разверните проект CucumberTest.

Найдите файл pom.xml.

Щелкните правой кнопкой мыши и выберите опцию Открыть с помощью «Текстового редактора».

Добавить зависимость для Selenium — это будет указывать Maven, какие файлы jar Selenium следует загружать из центрального хранилища в локальное хранилище.

Откройте файл pom.xml в режиме редактирования, создайте тег зависимостей ( ) внутри тега проекта.

Внутри тега зависимости создайте тег зависимости ( ).

Укажите следующую информацию в теге зависимости.

Добавить зависимость для Cucumber-Java: это будет указывать Maven, какие файлы Cucumber должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Предоставьте следующую информацию в теге зависимостей.

Добавить зависимость для Cucumber-Java: это будет указывать Maven, какие файлы Cucumber должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Предоставьте следующую информацию в теге зависимостей.

Добавить зависимость для Cucumber-JUnit: это будет указывать Maven, какие файлы Cucumber JUnit следует загружать из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

Добавить зависимость для Cucumber-JUnit: это будет указывать Maven, какие файлы Cucumber JUnit следует загружать из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

Добавить зависимость для JUnit — это будет указывать Maven, какие файлы JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

Добавить зависимость для JUnit — это будет указывать Maven, какие файлы JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

Добавить зависимость для JUnit — это будет указывать Maven, какие файлы JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

Добавить зависимость для JUnit — это будет указывать Maven, какие файлы JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

Проверьте двоичные файлы.

После успешного редактирования pom.xml сохраните его.

Перейдите в Проект → Очистить — это займет несколько минут.

Проверьте двоичные файлы.

После успешного редактирования pom.xml сохраните его.

Перейдите в Проект → Очистить — это займет несколько минут.

Шаг 2 — Создайте пакет с именем «outline» в src / test / java

Шаг 3 — Создайте файл объектов с именем «outline.feature»

Выберите и щелкните правой кнопкой мыши на схеме пакета.

Нажмите на «Новый» файл.

Дайте имя файла, например, «outline.feature»

Запишите следующий текст в файл и сохраните его.

Особенность — Схема Сценария

Схема сценария — Функциональность входа для сайта социальной сети.

Данный пользователь переходит на Facebook

Когда я ввожу имя пользователя как « » и пароль как « »

Тогда логин должен быть неудачным

Выберите и щелкните правой кнопкой мыши на схеме пакета.

Нажмите на «Новый» файл.

Дайте имя файла, например, «outline.feature»

Запишите следующий текст в файл и сохраните его.

Особенность — Схема Сценария

Схема сценария — Функциональность входа для сайта социальной сети.

Данный пользователь переходит на Facebook

Когда я ввожу имя пользователя как « » и пароль как « »

Тогда логин должен быть неудачным

Примечание. Здесь примерная аннотация описывает диапазон входных данных, предоставляемых при выполнении сценария. Тестовый сценарий будет выполняться для каждого из предоставленных входных данных. Итак, в данном примере тестовый сценарий будет выполнен трижды.

Шаг 4 — Создайте файл определения шага.

Выберите и щелкните правой кнопкой мыши на схеме пакета.

Нажмите на «Новый» файл.

Дайте имя файла как stepdefinition.java

Запишите следующий текст в файл и сохраните его.

Выберите и щелкните правой кнопкой мыши на схеме пакета.

Нажмите на «Новый» файл.

Дайте имя файла как stepdefinition.java

Запишите следующий текст в файл и сохраните его.

Примечание. В приведенном выше коде мы должны определить функцию, имеющую два входных аргумента: один для имени пользователя и другой для пароля. Таким образом, для каждого набора входных данных, представленных в примере тега, будут выполнены наборы GIVEN, WHEN и THEN.

Шаг 5 — Создайте файл класса бегуна.

Выберите и щелкните правой кнопкой мыши на схеме пакета.

Нажмите на «Новый» файл.

Дайте имя файла, например, runTest.java

Запишите следующий текст в файл и сохраните его.

Выберите и щелкните правой кнопкой мыши на схеме пакета.

Нажмите на «Новый» файл.

Дайте имя файла, например, runTest.java

Запишите следующий текст в файл и сохраните его.

Запустите тест, используя опцию —

Выберите файл runTest.java из проводника пакетов.

Выберите JUnit test.

Запустите тест, используя опцию —

Выберите файл runTest.java из проводника пакетов.

Выберите JUnit test.

При запуске этого файла класса вы увидите следующие вещи

Facebook открывается в новом экземпляре браузера Firefox.

Имя пользователя1 и пароль1 будут переданы в качестве ввода в поле имени пользователя и пароля.

В браузере появится сообщение о неудачном входе в систему.

В консоли вы увидите напечатанный «Test Pass».

Результаты шагов с 1 по 5 будут повторно выполнены для имени пользователя2 и пароля2.

Facebook открывается в новом экземпляре браузера Firefox.

Имя пользователя1 и пароль1 будут переданы в качестве ввода в поле имени пользователя и пароля.

В браузере появится сообщение о неудачном входе в систему.

В консоли вы увидите напечатанный «Test Pass».

Результаты шагов с 1 по 5 будут повторно выполнены для имени пользователя2 и пароля2.

В двух словах, когда сценарий не изменяется, а изменяется только значение данных, рекомендуется использовать таблицы данных схемы сценария.

Огурец — Теги

Это выглядит просто, когда у нас есть только один, два или, может быть, пять сценариев в файле объектов. Однако в реальной жизни этого не происходит. Для каждой тестируемой функции у нас может быть 10, 20 или больше сценариев в одном файле функций. Они могут представлять разные цели (тест на дымность / регрессионный тест), разные перспективы (разработчик / QA / BA), разный статус (готов к выполнению / работа в процессе) и т. Д. Как управлять выполнением для такой массы?

Для этого Cucumber уже предоставил способ организовать выполнение сценария с помощью тегов в файле объектов. Мы можем определить каждый сценарий с помощью полезного тега. Позже, в файле runner, мы можем решить, какой именно тег (и, соответственно, сценарий) мы хотим, чтобы Cucumber выполнял. Тег начинается с «@». После «@» у вас может быть любой соответствующий текст для определения вашего тега. Давайте разберемся с этим на примере.

Предположим, есть два или более сценариев в файле объектов. Мы хотим выполнить только один сценарий в рамках теста на дым. Итак, во-первых, нужно определить этот сценарий, а во-вторых, пометить его текстом «@SmokeTest» в начале сценария. Давайте глубоко посмотрим на это —

Шаг 2 — Создайте пакет с именем cucumberTag в src / test / java

Источник

Читайте также:  хула в исламе что это такое
Сказочный портал