Конкордеон — Обзор
Concordion — это мощный инструмент для написания и управления автоматическими приемочными тестами в проектах на основе Java. Он напрямую интегрируется с платформой JUnit, что делает его готовым для использования со всеми популярными средами разработки на основе JAVA, такими как Netbeans, Eclipse, IntelliJ IDEA.
Активная спецификация программного обеспечения
Спецификация активного программного обеспечения — это способ указать поведение функции. Он также предоставляет способ реализации и проверки спецификации программного обеспечения путем установления связи с разрабатываемой системой.
Активная спецификация в Concordion состоит из двух частей:
-
Чисто написанный документ с требованиями, который описывает желаемую функциональность, написанную с использованием XHTML. Спецификации на основе XHTML содержат описания функциональных возможностей, предоставляемых с примерами приемочных испытаний. Данные примера помечены с использованием простых тегов HTML.
-
Приемочные тесты написаны на языке Java, называемом кодом фикстуры. Используя расширение Concordion стандартного тестового примера JUnit, тест реализован. Ответственность за обнаружение данных в примере, помеченных тегом, и их использование для проверки разрабатываемого программного обеспечения лежит на ответственности Fixture Code.
Чисто написанный документ с требованиями, который описывает желаемую функциональность, написанную с использованием XHTML. Спецификации на основе XHTML содержат описания функциональных возможностей, предоставляемых с примерами приемочных испытаний. Данные примера помечены с использованием простых тегов HTML.
Приемочные тесты написаны на языке Java, называемом кодом фикстуры. Используя расширение Concordion стандартного тестового примера JUnit, тест реализован. Ответственность за обнаружение данных в примере, помеченных тегом, и их использование для проверки разрабатываемого программного обеспечения лежит на ответственности Fixture Code.
Выход Cncordion
Когда выполняются тесты активной спецификации Concordion, в исходных XHTML-файлах отображаются исходная спецификация и результаты испытаний. Успешный тест выделен «зеленым» цветом, а неудачный тест — «красным». Поскольку любое изменение в системе приведет к провалу теста, который помогает определить, что спецификация подлежит обновлению, Concordion определяет эти спецификации как активные спецификации. Поэтому технические характеристики всегда актуальны.
Ключевая особенность
Ниже приведены ключевые особенности Concordion:
-
Спецификации как документация. Спецификация Concordion, хорошо читаемая, может использоваться в качестве активной системной документации. Поскольку спецификации на основе Concordion написаны на HTML, эти документы могут быть снабжены гиперссылками.
-
Спецификации действительны — спецификация Concordion содержит рабочие примеры поведения, которые выполняются в отношении системы. Спецификации имеют цветовую кодировку, так что любой может увидеть, работают ли примеры или нет. Выполнение спецификаций Concordion регулярно делает документацию актуальной.
-
Отдельно «что?» от «как?» — Спецификация Concordion помогает поддерживать разделение между реализацией и требуемым поведением системы. Это обеспечивает гибкость, что реализация может быть изменена позже.
-
Простота в изучении — библиотека Concordion разработана с учетом краткости и краткости обучения. У него очень мало команд для изучения, а примеры автоматизированы с помощью тестов JUnit, поэтому тесты можно легко запускать и легко интегрировать в существующие проекты.
-
Мощная настройка — Concordion предоставляет API расширений, который позволяет добавлять функциональность. Например, электронные таблицы Excel могут использоваться в качестве спецификаций, к выводу могут добавляться скриншоты, может отображаться информация журнала и многое другое.
Спецификации как документация. Спецификация Concordion, хорошо читаемая, может использоваться в качестве активной системной документации. Поскольку спецификации на основе Concordion написаны на HTML, эти документы могут быть снабжены гиперссылками.
Спецификации действительны — спецификация Concordion содержит рабочие примеры поведения, которые выполняются в отношении системы. Спецификации имеют цветовую кодировку, так что любой может увидеть, работают ли примеры или нет. Выполнение спецификаций Concordion регулярно делает документацию актуальной.
Отдельно «что?» от «как?» — Спецификация Concordion помогает поддерживать разделение между реализацией и требуемым поведением системы. Это обеспечивает гибкость, что реализация может быть изменена позже.
Простота в изучении — библиотека Concordion разработана с учетом краткости и краткости обучения. У него очень мало команд для изучения, а примеры автоматизированы с помощью тестов JUnit, поэтому тесты можно легко запускать и легко интегрировать в существующие проекты.
Мощная настройка — Concordion предоставляет API расширений, который позволяет добавлять функциональность. Например, электронные таблицы Excel могут использоваться в качестве спецификаций, к выводу могут добавляться скриншоты, может отображаться информация журнала и многое другое.
Concordion — настройка среды
Из этого туториала вы узнаете, как подготовить среду разработки для начала работы с Spring Framework. Это руководство также научит вас настраивать JDK, Tomcat и Eclipse на вашем компьютере перед установкой Spring Framework:
Шаг 1 — Настройка Java Development Kit (JDK):
Вы можете скачать последнюю версию SDK с сайта Oracle на Java: Java SE Downloads . В загруженных файлах вы найдете инструкции по установке JDK, следуйте инструкциям по установке и настройке. Наконец, установите переменные окружения PATH и JAVA_HOME, чтобы они ссылались на каталог, содержащий java и javac, обычно java_install_dir / bin и java_install_dir соответственно.
Если вы работаете в Windows и установили JDK в C: \ jdk1.7.0_75, вам нужно будет поместить следующую строку в ваш файл C: \ autoexec.bat.
set PATH=C:\jdk1.7.0_75\bin;%PATH% set JAVA_HOME=C:\jdk1.7.0_75
Кроме того, в Windows NT / 2000 / XP вы также можете щелкнуть правой кнопкой мыши на «Мой компьютер», выбрать «Свойства», затем «Дополнительно», затем «Переменные среды». Затем вы обновите значение PATH и нажмете кнопку ОК.
В Unix (Solaris, Linux и т. Д.), Если SDK установлен в /usr/local/jdk1.7.0_75 и вы используете оболочку C, вы должны поместить следующее в свой файл .cshrc.
setenv PATH /usr/local/jdk1.7.0_75/bin:$PATH setenv JAVA_HOME /usr/local/jdk1.7.0_75
В качестве альтернативы, если вы используете интегрированную среду разработки (IDE), такую как Borland JBuilder, Eclipse, IntelliJ IDEA или Sun ONE Studio, скомпилируйте и запустите простую программу, чтобы подтвердить, что IDE знает, где вы установили Java, в противном случае выполните правильную настройку в соответствии с данным документом. из IDE.
Шаг 2 — Настройка Eclipse IDE
Все примеры в этом руководстве написаны с использованием Eclipse IDE. Поэтому я бы посоветовал вам установить последнюю версию Eclipse на ваш компьютер.
Чтобы установить Eclipse IDE, загрузите последние двоичные файлы Eclipse с http://www.eclipse.org/downloads/ . После загрузки установки распакуйте бинарный дистрибутив в удобное место. Например, в C: \ eclipse для Windows или / usr / local / eclipse в Linux / Unix и, наконец, установите переменную PATH соответствующим образом.
Eclipse можно запустить, выполнив следующие команды на компьютере с Windows, или вы можете просто дважды щелкнуть по eclipse.exe
%C:\eclipse\eclipse.exe
Eclipse можно запустить, выполнив следующие команды на компьютере Unix (Solaris, Linux и т. Д.):
$/usr/local/eclipse/eclipse
После успешного запуска, если все в порядке, он должен отобразить следующий результат:
Шаг 3: Скачать архив Junit
Загрузите последнюю версию файла JUnit jar с http://www.junit.org . На момент написания этого руководства я скачал Junit-4.10.jar и скопировал его в папку C: \> JUnit.
Операционные системы | Название архива |
---|---|
Windows | junit4.10.jar |
Linux | junit4.10.jar |
макинтош | junit4.10.jar |
Шаг 4: Установите среду JUnit
Установите переменную среды JUNIT_HOME, чтобы она указывала на местоположение базовой директории, где на вашем компьютере хранится JUNIT jar. Предполагается, что мы сохранили файл junit4.10.jar в папке JUNIT в различных операционных системах следующим образом.
Операционные системы | Выход |
---|---|
Windows | Установите переменную окружения JUNIT_HOME в C: \ JUNIT |
Linux | экспорт JUNIT_HOME = / usr / local / JUNIT |
макинтош | экспорт JUNIT_HOME = / Библиотека / JUNIT |
Шаг 5: Установите переменную CLASSPATH
Установите переменную среды CLASSPATH, чтобы она указывала на расположение JAR JAR. Предполагается, что мы сохранили файл junit4.10.jar в папке JUNIT в различных операционных системах следующим образом.
Операционные системы | Выход |
---|---|
Windows | Задайте для переменной среды CLASSPATH значение% CLASSPATH%;% JUNIT_HOME% \ junit4.10.jar;.; |
Linux | export CLASSPATH = $ CLASSPATH: $ JUNIT_HOME / junit4.10.jar :. |
макинтош | export CLASSPATH = $ CLASSPATH: $ JUNIT_HOME / junit4.10.jar :. |
Шаг 6 — Настройка библиотек concordion
Теперь, если все в порядке, вы можете приступить к настройке ваших библиотек Concordion. Ниже приведены простые шаги для загрузки и установки фреймворка на вашем компьютере.
Загрузите последнюю версию двоичных файлов платформы Concordion с http://dl.bintray.com/concordion/downloads/concordion-1.5.1.zip.
На момент написания этого руководства я загрузил concordion-1.5.1 на свой компьютер с Windows, и когда вы распакуете загруженный файл, он даст вам следующую структуру каталогов внутри E: \ concordion-1.5.1, как показано ниже.
-
lib — папка библиотеки
-
Hamcrest-ядро-1.3.jar
-
JUnit-4.12.jar
-
OGNL-2.6.9.jar
-
XOM-1.2.5.jar
-
-
src — папка с исходным кодом
-
главный
-
тестовое задание
-
тест-манекены
-
-
concordion-1.5.1.jar
lib — папка библиотеки
Hamcrest-ядро-1.3.jar
JUnit-4.12.jar
OGNL-2.6.9.jar
XOM-1.2.5.jar
src — папка с исходным кодом
главный
тестовое задание
тест-манекены
concordion-1.5.1.jar
Вы найдете все библиотеки зависимостей Concordion в каталоге E: \ concordion \ lib. Убедитесь, что вы правильно установили переменную CLASSPATH в этом каталоге, иначе вы столкнетесь с проблемой при запуске приложения. Если вы используете Eclipse, тогда не обязательно устанавливать CLASSPATH, потому что все настройки будут выполнены через Eclipse.
Как только вы закончите с этим последним шагом, вы готовы приступить к своему первому Примеру Конкордеона, который вы увидите в следующей главе.
Конкордеон — первое применение
Давайте начнем программировать с Concordion. Прежде чем вы начнете писать свой первый пример с использованием Concordion, вы должны убедиться, что вы правильно настроили свою среду Concordion, как описано в руководстве Concordion — Environment Environment . Мы также предполагаем, что вы немного разбираетесь в Eclipse IDE.
Итак, давайте приступим к написанию простого приложения Concordion, которое напечатает следующий приемочный тест —
Example When Robert logs in the system, a greeting "Hello Robert!" is displayed.
Шаг 1 — Создать проект Java
Первым шагом является создание простого Java-проекта с использованием Eclipse IDE. Выберите « Файл» → «Создать» → «Проект» и, наконец, выберите «Мастер Java-проектов» из списка. Теперь назовите ваш проект как Concordion, используя окно мастера следующим образом:
Как только ваш проект будет успешно создан, вы увидите следующее содержимое в Project Explorer —
Шаг 2 — Добавить необходимые библиотеки
Давайте добавим concordion и его зависимости в наш проект. Для этого щелкните правой кнопкой мыши имя вашего проекта concordion и затем выберите параметры, доступные в контекстном меню: « Путь сборки» → «Настроить путь сборки» для отображения окна «Путь сборки Java» следующим образом:
Теперь используйте кнопку « Добавить внешние JAR» , доступную на вкладке « Библиотеки », чтобы добавить следующий основной JAR-файл из папки Concordion.
- concordion-1.5.1
- Hamcrest-ядро-1,3
- JUnit-4,12
- OGNL-2.6.9
- XOM-1.2.5
Шаг 3 — Создание исходных файлов
Теперь давайте создадим реальные исходные файлы в рамках проекта concordion . Во-первых, нам нужно создать пакет с именем com.tutorialspoint . Для этого щелкните правой кнопкой мыши на src в разделе проводника пакетов и выберите опцию: New → Package .
Далее мы создадим системный файл .java в пакете com.tutorialspoint.
Вот содержимое файла System.java —
package com.tutorialspoint; public class System { public String getGreeting(String userName){ return "Hello " + userName + "!"; } }
Шаг 4 — Создание файлов спецификации
Теперь давайте создадим актуальные файлы спецификаций в рамках проекта concordion . Во-первых, нам нужно создать новую исходную папку с именем specs . Эта папка будет содержать файлы спецификаций, такие как JUnitFixture или test runner, а также файлы html, которые являются спецификациями. Теперь нам нужно создать пакет под названием specs.tutorialspoint . Для этого щелкните правой кнопкой мыши на спецификации в разделе проводника пакетов и выберите параметр: Создать → Пакет .
Далее мы создадим файлы System.html и SystemFixture.java в пакете specs.tutorialspoint. После этого мы добавим concordion.css в исходную папку спецификации.
Вот содержимое файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type="text/css" /> </head> <body> <h1>System Specifications</h1> <p>We are building specifications for our online order tracking application.</p> <p>Following is the requirement to show greeting to logged in user:</p> <div class = "example"> <h3>Example</h3> <p>When <span concordion:set = "#userName">Robert</span> logs in the system, a greeting "<span concordion:assertEquals = "getGreeting(#userName)"> Hello Robert!</span>" is displayed.</p> </div> </body> </html>
Вот содержимое файла SystemFixture.java —
package specs.tutorialspoint; import com.tutorialspoint.System; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; @RunWith(ConcordionRunner.class) public class SystemFixture { System system = new System(); public String getGreeting(String userName){ return system.getGreeting(userName); } }
Вот содержимое файла concordion.css —
* { font-family: Arial; } body { padding: 32px; } pre { padding: 6px 28px 6px 28px; background-color: #E8EEF7; } pre, pre *, code, code *, kbd { font-family: Courier New, Courier; font-size: 10pt; } h1, h1 * { font-size: 24pt; } p, td, th, li, .breadcrumbs { font-size: 10pt; } p, li { line-height: 140%; } table { border-collapse: collapse; empty-cells: show; margin: 8px 0px 8px 0px; } th, td { border: 1px solid black; padding: 3px; } td { background-color: white; vertical-align: top; } th { background-color: #C3D9FF; } li { margin-top: 6px; margin-bottom: 6px; } .example { padding: 6px 16px 6px 16px; border: 1px solid #D7D7D7; margin: 6px 0px 28px 0px; background-color: #F7F7F7; } .example h3 { margin-top: 8px; margin-bottom: 8px; font-size: 12pt; } .special { font-style: italic; } .idea { font-size: 9pt; color: #888; font-style: italic; } .tight li { margin-top: 1px; margin-bottom: 1px; } .commentary { float: right; width: 200px; background-color: #ffffd0; padding:8px; border: 3px solid #eeeeb0; margin: 10px 0px 10px 10px; } .commentary, .commentary * { font-size: 8pt; }
Следует обратить внимание на два важных момента относительно файла спецификации html и тестового набора —
-
System.html — это файл спецификации html, который использует пространство имен concordion.
System.html — это файл спецификации html, который использует пространство имен concordion.
<html xmlns:concordion="http://www.concordion.org/2007/concordion">
-
System.html использует команду concordion: set, чтобы установить значение временной переменной userName, которая будет Робертом. Здесь userName — это параметр, передаваемый методу getGreeting системного приспособления.
System.html использует команду concordion: set, чтобы установить значение временной переменной userName, которая будет Робертом. Здесь userName — это параметр, передаваемый методу getGreeting системного приспособления.
When <span concordion:set="#userName">Robert</span> logs in the system
-
System.html использует команду concordion: assertEquals для проверки вывода функции getGreeting (userName) на Hello Robert !.
System.html использует команду concordion: assertEquals для проверки вывода функции getGreeting (userName) на Hello Robert !.
a greeting "<span concordion:assertEquals="getGreeting(#userName)"> Hello Robert!</span>" is displayed.
-
SystemFixture — это тестовое устройство JUnit, аннотированное с помощью ConcordionRunner.class.
SystemFixture — это тестовое устройство JUnit, аннотированное с помощью ConcordionRunner.class.
@RunWith(ConcordionRunner.class) public class SystemFixture {
-
SystemFixture имеет метод getGreeting, который возвращает приветствия пользователю.
SystemFixture имеет метод getGreeting, который возвращает приветствия пользователю.
public String getGreeting(String userName){ return system.getGreeting(userName); }
Шаг 5 — Запуск программы
Щелкните правой кнопкой мыши область содержимого SystemFixture и выберите « Запуск от имени» > « Тестовый пример JUnit» . Вы увидите следующий результат с успехом junit.
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html Successes: 1, Failures: 0
System.html — это результат теста Concordion.
Поздравляем, вы успешно создали свой первый приемочный тест Concordion. Далее, давайте начнем делать что-то более интересное в следующих нескольких главах.
Concordion — установить команду
Команда Concordion set используется для хранения временных переменных, которые могут использоваться в других командах Concordion.
Рассмотрим следующее требование —
The Sum of two numbers 2 and 3 will be 5.
Если мы хотим, чтобы числа 2 и 3 были параметрами, и передавали их в функцию суммы в качестве параметра, чтобы их можно было сверять с результатами, возвращаемыми системой, тогда мы можем использовать команду concordion: set в тегах span вокруг чисел.
<p>The Sum of two numbers <span concordion:set = "#firstNumber">2</span> and <span concordion:set = "#secondNumber">3</span> will be <span concordion:assertEquals = "sum(#firstNumber, #secondNumber)">5 </span>.</p>
Когда Concordion анализирует документ, он устанавливает временную переменную #firstNumber в значение «2» и #secondNumber в значение «3», а затем вызывает метод sum () с параметрами, такими как #firstNumber и #secondNumber, и проверяет, что результат равен «5».
пример
Давайте создадим рабочую среду Eclipse и следуем приведенным ниже инструкциям, чтобы создать приложение Concordion.
шаг | Описание |
---|---|
1 | Создайте проект с именем concordion и создайте пакет com.tutorialspoint в папке src в созданном проекте. |
2 | Добавьте необходимые библиотеки Concordion, используя опцию Add External JARs, как описано в главе Concordion — First Application . |
3 | Создайте Java-класс System в пакете com.tutorialspoint . |
4 | Создайте класс Fixture SystemFixture в пакете specs.tutorialspoint . |
5 | Создать спецификацию html System.html в пакете specs.tutorialspoint . |
6 | Последний шаг — создать содержимое всех файлов Java и файла спецификаций и запустить приложение, как описано ниже. |
Вот содержимое файла System.java —
package com.tutorialspoint; public class System { public int sum(int firstNumber, int secondNumber) { return firstNumber + secondNumber; } }
Ниже приводится содержание файла SystemFixture.java —
package specs.tutorialspoint; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; import com.tutorialspoint.System; @RunWith(ConcordionRunner.class) public class SystemFixture { System system = new System(); public int sum(int firstNumber, int secondNumber) { return system.sum(firstNumber, secondNumber); } }
Ниже приводится содержание файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>Calculator Specifications</h1> <p>We are building online calculator support in our website.</p> <p>Following is the requirement to add two numbers:</p> <div class = "example"> <h3>Example</h3> <p>The Sum of two numbers <span concordion:set = "#firstNumber">2</span> and <span concordion:set = "#secondNumber">3</span> will be <span concordion:execute = "#result = sum(#firstNumber, #secondNumber)"></span> <span concordion:assertEquals = "#result">5</span>.</p> </div> </body> </html>
Как только вы закончите с созданием исходных файлов и файлов спецификации, давайте запустим приложение как тест JUnit. Если с вашим приложением все в порядке, оно даст следующий результат:
C:\DOCUME>1\ADMINI>1\LOCALS>1\Temp\concordion\specs\tutorialspoint\System.html Successes: 1, Failures: 0
System.html — это результат теста соответствия.
Concordion — команда assertEquals
Команда Concordion assertEquals используется для проверки свойства или метода Java bean-компонента по указанному значению.
Рассмотрим следующее требование —
The sum of two numbers 2 and 3 will be 5.
Если мы хотим, чтобы числа 2 и 3 были параметрами, и передавали их функции суммирования как параметры, чтобы их можно было сверять с результатом как 5, возвращенным системой, тогда мы можем использовать команду concordion: assertEquals в теге span вокруг функции sum ,
<p>The Sum of two numbers <span concordion:set="#firstNumber">2</span> and <span concordion:set="#secondNumber">3</span> will be <span concordion:assertEquals="sum(#firstNumber, #secondNumber)">5</span>.</p>
Когда Concordion анализирует документ, он устанавливает временную переменную #firstNumber в значение «2» и #secondNumber в значение «3», используя команду set, а затем вызывает метод sum () с параметрами #firstNumber и #secondNumber. и проверьте, что результат равен «5», используя команду assertEquals.
пример
Давайте создадим рабочую среду Eclipse и выполните следующие шаги для создания приложения Concordion:
шаг | Описание |
---|---|
1 | Создайте проект с именем concordion и создайте пакет com.tutorialspoint в папке src в созданном проекте. |
2 | Добавьте необходимые библиотеки Concordion, используя опцию Add External JARs, как описано в главе Concordion — First Application . |
3 | Создайте Java-класс System в пакете com.tutorialspoint . |
4 | Создайте класс Fixture SystemFixture в пакете specs.tutorialspoint . |
5 | Создать спецификацию html System.html в пакете specs.tutorialspoint . |
6 | Последний шаг — создать содержимое всех файлов Java и файла спецификаций и запустить приложение, как описано ниже. |
Вот содержимое файла System.java —
package com.tutorialspoint; public class System { public int sum(int firstNumber, int secondNumber) { return firstNumber + secondNumber; } }
Ниже приводится содержание файла SystemFixture.java —
package specs.tutorialspoint; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; import com.tutorialspoint.System; @RunWith(ConcordionRunner.class) public class SystemFixture { System system = new System(); public int sum(int firstNumber, int secondNumber) { return system.sum(firstNumber, secondNumber); } }
Ниже приводится содержимое файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>Calculator Specifications</h1> <p>We are building online calculator support in our website.</p> <p>Following is the requirement to add two numbers:</p> <div class = "example"> <h3>Example</h3> <p>The Sum of two numbers <span concordion:set = "#firstNumber">2</span> and <span concordion:set = "#secondNumber">3</span> will be <span concordion:assertEquals = "sum(#firstNumber, #secondNumber)">5</span>.</p> </div> </body> </html>
Как только вы закончите с созданием файлов исходного кода и спецификации, давайте запустим приложение как JUnit Test. Если с вашим приложением все в порядке, то он покажет следующий результат —
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html Successes: 1, Failures: 0
System.html — это результат теста Concordion.
Успехи: 1, неудачи: 0
Concordion — команда assertTrue
Команда Concordion assertTrue используется, когда устройству необходимо знать ожидаемый результат для выполнения теста.
Рассмотрим следующее требование —
User Name : Robert De The User name starts with R. The User name starts with S == false.
Если мы хотим, чтобы тест выполнялся для имени пользователя и проверял, начинается ли имя пользователя с R или нет.
<p>User Name :<span concordion:set = "#userName">Robert De</span></p> <p>The User name <span concordion:assertTrue = "#userName.startsWith(#letter)">starts with <b concordion:set = "#letter">R</b></span>.</p> <p>The User name <span concordion:assertTrue = "#userName.startsWith(#letter)">starts with <b concordion:set = "#letter">S</b></span>.</p>
Когда Concordion анализирует документ, он установит временную переменную #userName в значение «Robert De». Затем он проверит, начинается ли имя пользователя с буквы, указанной в переменной #letter, заданной в следующей команде.
пример
Давайте создадим рабочую среду Eclipse и следуем приведенным ниже инструкциям, чтобы создать приложение Concordion.
шаг | Описание |
---|---|
1 | Создайте проект с именем concordion и создайте пакет com.tutorialspoint в папке src в созданном проекте. |
2 | Добавьте необходимые библиотеки Concordion, используя опцию Add External JARs, как описано в главе Concordion — First Application . |
3 | Создайте Java-класс System в пакете com.tutorialspoint . |
4 | Создайте класс Fixture SystemFixture в пакете specs.tutorialspoint . |
5 | Создать спецификацию html System.html в пакете specs.tutorialspoint . |
6 | Последний шаг — создать содержимое всех файлов Java и файла спецификации и запустить приложение, как описано ниже. |
Вот содержимое файла System.java —
package com.tutorialspoint; public class System { }
Ниже приводится содержание файла SystemFixture.java —
package specs.tutorialspoint; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; @RunWith(ConcordionRunner.class) public class SystemFixture { }
Ниже приводится содержимое файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>System Specifications</h1> <p>We are building specifications for our online order tracking application.</p> <p>Following is the requirement to split full name of a logged in user to its constituents by splitting name by whitespace:</p> <div class = "example"> <h3>Example</h3> <p>User Name :<span concordion:set = "#userName">Robert De</span></p> <p>The User name <span concordion:assertTrue = "#userName.startsWith(#letter)">starts with <b concordion:set = "#letter">R</b></span>.</p> <p>The User name <span concordion:assertTrue = "#userName.startsWith(#letter)">starts with <b concordion:set = "#letter">S</b></span>.</p> </div> </body> </html>
Как только вы закончите с созданием файлов исходного кода и спецификации, давайте запустим приложение как JUnit Test. Если с вашим приложением все в порядке, оно даст следующий результат:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html Successes: 1, Failures: 1
System.html — это результат теста Concordion.
Concordion — команда assertFalse
Команда Concordion assertFalse используется, когда устройству необходимо знать ожидаемый результат для выполнения теста.
Рассмотрим следующее требование —
User Name : Robert De The User name does not start with S.
Если мы хотим, чтобы тест выполнялся для имени пользователя и проверял, чтобы имя пользователя не начиналось с S.
<p>User Name :<span concordion:set = "#userName">Robert De</span></p> <p>The User name <span concordion:assertFalse = "#userName.startsWith(#letter)">does not start with <b concordion:set = "#letter">S</b></span>.</p>
Когда Concordion анализирует документ, он установит временную переменную #userName в значение «Robert De». Затем он проверит, начинается ли имя пользователя с буквы, указанной в переменной #letter, заданной в следующей команде.
пример
Давайте создадим рабочую среду Eclipse и следуем приведенным ниже инструкциям, чтобы создать приложение Concordion.
шаг | Описание |
---|---|
1 | Создайте проект с именем concordion и создайте пакет com.tutorialspoint в папке src в созданном проекте. |
2 | Добавьте необходимые библиотеки Concordion, используя опцию Add External JARs, как описано в главе Concordion — First Application . |
3 | Создайте Java-класс System в пакете com.tutorialspoint . |
4 | Создайте класс Fixture SystemFixture в пакете specs.tutorialspoint . |
5 | Создать спецификацию html System.html в пакете specs.tutorialspoint . |
6 | Последний шаг — создать содержимое всех файлов Java и файла спецификации и запустить приложение, как описано ниже. |
Вот содержимое файла System.java —
package com.tutorialspoint; public class System { }
Ниже приводится содержание файла SystemFixture.java —
package specs.tutorialspoint; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; @RunWith(ConcordionRunner.class) public class SystemFixture { }
Ниже приводится содержимое файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>System Specifications</h1> <p>We are building specifications for our online order tracking application.</p> <p>Following is the requirement to split full name of a logged in user to its constituents by splitting name by whitespace:</p> <div class = "example"> <h3>Example</h3> <p>User Name :<span concordion:set = "#userName">Robert De</span></p> <p>The User name <span concordion:assertFalse = "#userName.startsWith(#letter)"> does not start with <b concordion:set = "#letter"> S</b></span>.</p> </div> </body> </html>
Как только вы закончите с созданием файлов исходного кода и спецификации, давайте запустим приложение как JUnit Test. Если с вашим приложением все в порядке, оно даст следующий результат:
C: \ DOCUME ~ 1 \ Admini ~ 1 \ LOCALS ~ 1 \ Temp \ concordion \ функции \ tutorialspoint \ System.html Успехи: 1, неудачи: 0
System.html — это результат теста Concordion.
Concordion — выполнить команду
Команда выполнения Concordion используется для запуска операции приспособления Concordion. Рассмотрим следующее требование —
The sum of two numbers 2 and 3 will be 5.
Если мы хотим написать спецификацию для функции суммы, которая будет принимать два числа и выводить их сумму, тогда спецификация будет выглядеть следующим образом:
<p>The Sum of two numbers <span concordion:set = "#firstNumber">2</span> and <span concordion:set = "#secondNumber">3</span> will be <span concordion:execute = "#result = sum(#firstNumber, #secondNumber)"> </span><span concordion:assertEquals = "#result">5</span>.</p>
Когда Concordion анализирует документ, он устанавливает временную переменную #firstNumber в значение «2» и #secondNumber в значение «3», а затем выполняет метод sum () с параметрами, такими как #firstNumber и #secondNumber, используя execute введите в переменную #result результат и убедитесь, что переменная #result равна «5».
пример
Давайте создадим рабочую среду Eclipse и следуем приведенным ниже инструкциям, чтобы создать приложение Concordion.
шаг | Описание |
---|---|
1 | Создайте проект с именем concordion и создайте пакет com.tutorialspoint в папке src в созданном проекте. |
2 | Добавьте необходимые библиотеки Concordion, используя опцию Add External JARs, как описано в главе Concordion — First Application . |
3 | Создайте Java-класс System в пакете com.tutorialspoint . |
4 | Создайте класс Fixture SystemFixture в пакете specs.tutorialspoint . |
5 | Создать спецификацию html System.html в пакете specs.tutorialspoint . |
6 | Последний шаг — создать содержимое всех файлов Java и файла спецификации и запустить приложение, как описано ниже. |
Вот содержимое файла System.java —
package com.tutorialspoint; public class System { public int sum(int firstNumber, int secondNumber) { return firstNumber + secondNumber; } }
Ниже приводится содержание файла SystemFixture.java —
package specs.tutorialspoint; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; import com.tutorialspoint.System; @RunWith(ConcordionRunner.class) public class SystemFixture { System system = new System(); public int sum(int firstNumber, int secondNumber) { return system.sum(firstNumber, secondNumber); } }
Ниже приводится содержимое файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>Calculator Specifications</h1> <p>We are building online calculator support in our website.</p> <p>Following is the requirement to add two numbers:</p> <div class = "example"> <h3>Example</h3> <p>The Sum of two numbers <span concordion:set = "#firstNumber">2</span> and <span concordion:set = "#secondNumber">3</span> will be <span concordion:execute = "#result = sum(#firstNumber, #secondNumber)"> </span><span concordion:assertEquals = "#result">5</span>.</p> </div> </body> </html>
Как только вы закончите с созданием файлов исходного кода и спецификации, давайте запустим приложение как JUnit Test. Если с вашим приложением все в порядке, оно даст следующий результат:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html Successes: 1, Failures: 0
System.html — это результат теста Concordion.
Конкордеон — возвращающийся объект
Команда Concordion execute может использоваться для получения результата поведения в форме объекта, с помощью которого мы можем получить несколько выходных данных поведения. Например, рассмотрим следующее требование —
The full name Robert De is to be broken into first name Robert and last name De.
Здесь нам нужна функция split, которая принимает имя пользователя и возвращает результирующий объект с именем и фамилией в качестве своих свойств, чтобы мы могли их использовать.
Если мы хотим написать спецификацию для такой функции разбиения, которая будет ожидать имя пользователя и выводить объект результата, тогда будет следующая спецификация:
<p>The full name <span concordion:execute = "#result = split(#TEXT)">Robert De</span> is to be broken into first name <span concordion:assertEquals = "#result.firstName">Robert</span> and last name <span concordion:assertEquals = "#result.lastName">De</span>.</p>
Когда Concordion анализирует документ, он установит значение специальной переменной #TEXT в качестве значения текущего элемента как «Robert De» и передаст его функции split. Затем он выполнит метод split () с параметрами как #TEXT с помощью команды execute и установит результат в переменную #result и, используя объект результата, напечатает свойства firstName и lastName в качестве выходных данных.
пример
Давайте создадим рабочую среду Eclipse и следуем приведенным ниже инструкциям, чтобы создать приложение Concordion.
шаг | Описание |
---|---|
1 | Создайте проект с именем concordion и создайте пакет com.tutorialspoint в папке src в созданном проекте. |
2 | Добавьте необходимые библиотеки Concordion, используя опцию Add External JARs, как описано в главе Concordion — First Application . |
3 | Создайте Java-класс System , Result в пакете com.tutorialspoint . |
4 | Создайте класс Fixture SystemFixture в пакете specs.tutorialspoint . |
5 | Создать спецификацию html System.html в пакете specs.tutorialspoint . |
6 | Последний шаг — создать содержимое всех файлов Java и файла спецификации и запустить приложение, как описано ниже. |
Вот содержимое файла Result.java —
package com.tutorialspoint; public class Result { private String firstName; private String lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }
Вот содержимое файла System.java —
package com.tutorialspoint; public class System { public Result split(String userName){ Result result = new Result(); String[] words = userName.split(" "); result.setFirstName(words[0]); result.setLastName(words[1]); return result; } }
Ниже приводится содержимое файла SystemFixture.java.
package specs.tutorialspoint; import com.tutorialspoint.Result; import com.tutorialspoint.System; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; @RunWith(ConcordionRunner.class) public class SystemFixture { System system = new System(); public Result split(String userName){ return system.split(userName); } }
Ниже приводится содержание файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>System Specifications</h1> <p>We are building specifications for our online order tracking application.</p> <p>Following is the requirement to split full name of a logged in user to its constituents by splitting name by whitespace:</p> <div class = "example"> <h3>Example</h3> <p>The full name <span concordion:execute = "#result = split(#TEXT)">Robert De</span> is to be broken into first name <span concordion:assertEquals = "#result.firstName">Robert</span> and last name <span concordion:assertEquals = "#result.lastName">De</span>.</p> </div> </body> </html>
Как только вы закончите с созданием исходного кода и файлов спецификации, давайте запустим приложение как JUnit Test. Если с вашим приложением все в порядке, оно даст следующий результат:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html Successes: 1, Failures: 0
System.html — это результат теста Concordion.
Конкордион — Возвращение карты
Команда Concordion execute может использоваться для получения результата поведения в форме карты, с помощью которой мы можем получить несколько выходов поведения. Например, рассмотрим следующее требование —
The full name Robert De is to be broken into its first name Robert and last name De.
Здесь нам нужна функция spilled, которая принимает имя пользователя и возвращает объект Map, имеющий firstName и lastName в качестве ключей, имеющих соответствующие значения, чтобы мы могли их использовать.
Если мы хотим написать спецификацию для такой функции разбиения, которая будет принимать имя пользователя и выводить объект результата, тогда спецификация будет следующей:
<p>The full name <span concordion:execute = "#result = split(#TEXT)">Robert De</span> is to be broken into first name <span concordion:assertEquals = "#result.firstName">Robert</span> and last name <span concordion:assertEquals = "#result.lastName">De</span>.</p>
Когда Concordion анализирует документ, он установит значение специальной переменной #TEXT равным значению текущего элемента как «Robert De» и передаст его функции split. Затем он выполнит метод split () с параметрами в качестве #TEXT с помощью команды execute и установит результат в переменную #result и с помощью карты результатов выведет значения firstName и lastName в качестве выходных данных.
пример
Давайте создадим рабочую среду Eclipse и следуем приведенным ниже инструкциям, чтобы создать приложение Concordion.
шаг | Описание |
---|---|
1 | Создайте проект с именем concordion и создайте пакет com.tutorialspoint в папке src в созданном проекте. |
2 | Добавьте необходимые библиотеки Concordion, используя опцию Add External JARs, как описано в главе Concordion — First Application . |
3 | Создайте Java-класс System в пакете com.tutorialspoint . |
4 | Создайте класс Fixture SystemFixture в пакете specs.tutorialspoint . |
5 | Создать спецификацию html System.html в пакете specs.tutorialspoint . |
6 | Последний шаг — создать содержимое всех файлов Java и файла спецификации и запустить приложение, как описано ниже. |
Вот содержимое файла System.java —
package com.tutorialspoint; import java.util.HashMap; import java.util.Map; public class System { public Map split(String userName){ Map<String, String> result = new HashMap<String, String>(); String[] words = userName.split(" "); result.put("firstName", words[0]); result.put("lastName", words[1]); return result; } }
Ниже приводится содержание файла SystemFixture.java —
package specs.tutorialspoint; import java.util.Map; import com.tutorialspoint.Result; import com.tutorialspoint.System; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; @RunWith(ConcordionRunner.class) public class SystemFixture { System system = new System(); public Map<String, String> split(String userName){ return system.split(userName); } }
Ниже приводится содержание файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>System Specifications</h1> <p>We are building specifications for our online order tracking application.</p> <p>Following is the requirement to split full name of a logged in user to its constituents by splitting name by whitespace:</p> <div class = "example"> <h3>Example</h3> <p>The full name <span concordion:execute = "#result = split(#TEXT)">Robert De</span> is to be broken into first name <span concordion:assertEquals = "#result.firstName">Robert</span> and last name <span concordion:assertEquals = "#result.lastName">De</span>.</p> </div> </body> </html>
Как только вы закончите с созданием исходного кода и файлов спецификации, давайте запустим приложение как JUnit Test. Если с вашим приложением все в порядке, оно даст следующий результат:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html Successes: 1, Failures: 0
System.html — это результат теста Concordion.
Concordion — Возвращает MultiValueResult
Команда Concordion execute может использоваться для получения результата поведения в форме карты, с помощью которой мы можем получить несколько выходов поведения. Например, рассмотрим следующее требование —
The full name Robert De is to be broken into its first name Robert and last name De.
Здесь нам нужна функция split, которая принимает имя пользователя и возвращает объект Map, имеющий firstName и lastName в качестве ключей с соответствующими значениями, чтобы мы могли их использовать.
Если мы хотим написать спецификацию для такой функции разбиения, которая будет принимать имя пользователя и выводить объект результата, тогда спецификация будет выглядеть следующим образом:
<p>The full name <span concordion:execute = "#result = split(#TEXT)">Robert De</span> is to be broken into first name <span concordion:assertEquals = "#result.firstName">Robert</span> and last name <span concordion:assertEquals = "#result.lastName">De</span>.</p>
Когда Concordion анализирует документ, он устанавливает значение специальной переменной #TEXT равным значению текущего элемента как «Robert De» и передает его в функцию split. Затем он выполнит метод split () с параметрами в качестве #TEXT с помощью команды execute и установит результат в переменную #result и, используя карту результатов, выведет значения firstName и lastName в качестве выходных данных.
пример
Давайте создадим рабочую среду Eclipse и следуем приведенным ниже инструкциям, чтобы создать приложение Concordion.
шаг | Описание |
---|---|
1 | Создайте проект с именем concordion и создайте пакет com.tutorialspoint в папке src в созданном проекте. |
2 | Добавьте необходимые библиотеки Concordion, используя опцию Add External JARs, как описано в главе Concordion — First Application . |
3 | Создайте Java-класс System в пакете com.tutorialspoint . |
4 | Создайте класс Fixture SystemFixture в пакете specs.tutorialspoint . |
5 | Создать спецификацию html System.html в пакете specs.tutorialspoint . |
6 | Последний шаг — создать содержимое всех файлов Java и файла спецификации и запустить приложение, как описано ниже. |
Вот содержимое файла System.java —
package com.tutorialspoint; import org.concordion.api.MultiValueResult; public class System { public MultiValueResult split(String userName){ MultiValueResult result = new MultiValueResult(); String[] words = userName.split(" "); result.with("firstName", words[0]).with("lastName", words[1]); return result; } }
Ниже приводится содержание файла SystemFixture.java —
package specs.tutorialspoint; import org.concordion.api.MultiValueResult; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; import com.tutorialspoint.System; @RunWith(ConcordionRunner.class) public class SystemFixture { System system = new System(); public MultiValueResult split(String userName){ return system.split(userName); } }
Ниже приводится содержание файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>System Specifications</h1> <p>We are building specifications for our online order tracking application.</p> <p>Following is the requirement to split full name of a logged in user to its constituents by splitting name by whitespace:</p> <div class = "example"> <h3>Example</h3> <p>The full name <span concordion:execute = "#result = split(#TEXT)">Robert De</span> is to be broken into first name <span concordion:assertEquals = "#result.firstName">Robert</span> and last name <span concordion:assertEquals = "#result.lastName">De</span>.</p> </div> </body> </html>
Как только вы закончите с созданием исходного кода и файлов спецификации, давайте запустим приложение как JUnit Test. Если с вашим приложением все в порядке, оно даст следующий результат:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html Successes: 2, Failures: 0
System.html — это результат теста Concordion.
Конкордеон — Выполнить на столе
Команда выполнения Concordion может быть использована для запуска операции устройства Concordion в повторяющемся порядке. Например, будет полезно, если мы хотим проиллюстрировать требование несколькими примерами в виде таблицы.
Рассмотрим следующее требование —
<table> <tr><th>First Number</th><th>Second Number</th><th>Sum</th></tr> <tr><td>2</td><td>3</td><td>5</td></tr> <tr><td>4</td><td>5</td><td>9</td></tr> </table>
Если мы хотим написать спецификацию для функции суммы, которая будет принимать два числа и выводить их сумму, тогда спецификация будет выглядеть следующим образом:
<table> <tr><th>First Number</th><th>Second Number</th><th>Sum</th></tr> <tr concordion:execute = "#result = sum(#fullName)"> <td concordion:set = "#firstNumber">2</td> <td concordion:set = "#secondNumber">3</td> <td concordion:assertEquals = "#result">5</td> </tr> <tr concordion:execute = "#result = sum(#fullName)"> <td concordion:set = "#firstNumber">4</td> <td concordion:set = "#secondNumber">5</td> <td concordion:assertEquals = "#result">9</td> </tr> </table>
Когда Concordion анализирует документ, он устанавливает временную переменную #firstNumber в значение «2» и #secondNumber в значение «3». Затем он выполнит метод sum () с параметрами, такими как #firstNumber и #secondNumber, используя команду execute, установит результат в переменную #result и проверит, что переменная #result равна «5». Этот процесс повторяется для каждого элемента строки таблицы.
пример
Давайте создадим рабочую среду Eclipse и следуем приведенным ниже инструкциям, чтобы создать приложение Concordion.
шаг | Описание |
---|---|
1 | Создайте проект с именем concordion и создайте пакет com.tutorialspoint в папке src в созданном проекте. |
2 | Добавьте необходимые библиотеки Concordion, используя опцию Add External JARs, как описано в главе Concordion — First Application . |
3 | Создайте Java-класс System в пакете com.tutorialspoint . |
4 | Создайте класс Fixture SystemFixture в пакете specs.tutorialspoint . |
5 | Создать спецификацию html System.html в пакете specs.tutorialspoint . |
6 | Последний шаг — создать содержимое всех файлов Java и файла спецификации и запустить приложение, как описано ниже. |
Вот содержимое файла System.java —
package com.tutorialspoint; public class System { public int sum(int firstNumber, int secondNumber) { return firstNumber + secondNumber; } }
Ниже приводится содержание файла SystemFixture.java —
package specs.tutorialspoint; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; import com.tutorialspoint.System; @RunWith(ConcordionRunner.class) public class SystemFixture { System system = new System(); public int sum(int firstNumber, int secondNumber) { return system.sum(firstNumber, secondNumber); } }
Ниже приводится содержание файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>Calculator Specifications</h1> <p>We are building online calculator support in our website.</p> <p>Following is the requirement to add two numbers:</p> <div class = "example"> <h3>Example</h3> <table> <tr> <th>First Number</th> <th>Second Number</th> <th>Sum</th> </tr> <tr concordion:execute = "#result = sum(#firstNumber, #secondNumber)"> <td concordion:set = "#firstNumber">2</td> <td concordion:set = "#secondNumber">3</td> <td concordion:assertEquals = "#result">5</td> </tr> <tr concordion:execute = "#result = sum(#firstNumber, #secondNumber)"> <td concordion:set = "#firstNumber">4</td> <td concordion:set = "#secondNumber">5</td> <td concordion:assertEquals = "#result">9</td> </tr> </table> </div> </body> </html>
Как только вы закончите с созданием исходного кода и файлов спецификации, давайте запустим приложение как JUnit Test. Если с вашим приложением все в порядке, оно даст следующий результат:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html Successes: 2, Failures: 0
System.html — это результат теста Concordion.
Concordion — выполнить в списке
Команда выполнения Concordion может быть использована для запуска операции устройства Concordion в повторяющемся порядке. Например, будет полезно, если мы хотим проиллюстрировать требование несколькими примерами в виде списка.
Рассмотрим следующее требование —
<ul> <li>The full name Robert De is to be split as <ul> <li>Robert</li> <li>De</li> </ul> </li> <li>The full name John Diere is to be split as <ul> <li>John</li> <li>Diere</li> </ul> </li> </ul>
Если мы хотим написать спецификацию для функции split, которая разделит имя на его имя и фамилию, тогда спецификация будет выглядеть следующим образом:
<ul> <li>The full name <span concordion:execute = "#result = split(#TEXT)"> Robert De</span> is to be splited as <ul> <li><span concordion:assertEquals = "#result.firstName">Robert</span></li> <li><span concordion:assertEquals = "#result.lastName">De</span></li> </ul> </li> <li>The full name <span concordion:execute = "#result = split(#TEXT)"> John Diere</span> is to be splited as <ul> <li><span concordion:assertEquals = "#result.firstName">John</span></li> <li><span concordion:assertEquals = "#result.lastName">Diere</span></li> </ul> </li> </ul>
Когда Concordion анализирует документ, он установит значение специальной переменной #TEXT равным значению текущего элемента как «Robert De» и передаст его функции split. Затем он выполнит метод split () с параметрами в качестве #TEXT с помощью команды execute и установит результат в переменную #result и, используя result, выведет значения firstName и lastName в качестве выходных данных.
пример
Давайте создадим рабочую среду Eclipse и следуем приведенным ниже инструкциям, чтобы создать приложение Concordion.
шаг | Описание |
---|---|
1 | Создайте проект с именем concordion и создайте пакет com.tutorialspoint в папке src в созданном проекте. |
2 | Добавьте необходимые библиотеки Concordion, используя опцию Add External JARs, как описано в главе Concordion — First Application . |
3 | Создайте Java-класс System в пакете com.tutorialspoint . |
4 | Создайте класс Fixture SystemFixture в пакете specs.tutorialspoint . |
5 | Создать спецификацию html System.html в пакете specs.tutorialspoint . |
6 | Последний шаг — создать содержимое всех файлов Java и файла спецификации и запустить приложение, как описано ниже. |
Вот содержимое файла System.java —
package com.tutorialspoint; import org.concordion.api.MultiValueResult; public class System { public MultiValueResult split(String userName){ MultiValueResult result = new MultiValueResult(); String[] words = userName.split(" "); result.with("firstName", words[0]).with("lastName", words[1]); return result; } }
Ниже приводится содержание файла SystemFixture.java —
package specs.tutorialspoint; import org.concordion.api.MultiValueResult; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; import com.tutorialspoint.System; @RunWith(ConcordionRunner.class) public class SystemFixture { System system = new System(); public MultiValueResult split(String userName){ return system.split(userName); } }
Ниже приводится содержание файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>System Specifications</h1> <p>We are building specifications for our online order tracking application.</p> <p>Following is the requirement to split full name of a logged in user to its constituents by splitting name by whitespace:</p> <div class = "example"> <h3>Example</h3> <ul> <li>The full name <span concordion:execute = "#result = split(#TEXT)"> Robert De</span> is to be splited as <ul> <li><span concordion:assertEquals = "#result.firstName"> Robert</span></li> <li><span concordion:assertEquals = "#result.lastName"> De</span></li> </ul> </li> <li>The full name <span concordion:execute ="#result = split(#TEXT)"> John Diere</span> is to be splited as <ul> <li><span concordion:assertEquals = "#result.firstName"> John</span></li> <li><span concordion:assertEquals = "#result.lastName"> Diere</span></li> </ul> </li> </ul> </div> </body> </html>
Как только вы закончите с созданием файлов исходного кода и спецификации, давайте запустим приложение как JUnit Test. Если с вашим приложением все в порядке, оно даст следующий результат:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html Successes: 4, Failures: 0
System.html — это результат теста Concordion.
Concordion — команда verifyRows
Команда Concordion verifyRows может использоваться для проверки содержимого коллекции, возвращенной в результате системой. Например, если мы настроили группу пользователей в системе и выполнили частичный поиск по ним, тогда система должна вернуть соответствующие элементы, в противном случае наши приемочные тесты не пройдут.
Рассмотрим следующее требование —
<table> <tr><th>Users</th></tr> <tr><td>Robert De</td></tr> <tr><td>John Diere</td></tr> <tr><td>Julie Re</td></tr> </table> <p>Search for J should return:</p> <table> <tr><th>Matching Users</th></tr> <tr><td>John Diere</td></tr> <tr><td>Julie Re</td></tr> </table>
Если мы хотим написать спецификацию для такой функции поиска, которая будет искать и возвращать коллекцию, тогда спецификация будет выглядеть следующим образом:
<table concordion:execute = "addUser(#username)"> <tr><th concordion:set = "#username">Username</th></tr> <tr><td>Robert De</td></tr> <tr><td>John Diere</td></tr> <tr><td>Julie Re</td></tr> </table> <p>Search for "<b concordion:set = "#searchString">J</b>" should return:</p> <table concordion:verifyRows = "#username : search(#searchString)"> <tr><th concordion:assertEquals = "#username">Matching Usernames</th></tr> <tr><td>John Diere</td></tr> <tr><td>Julie Re</td></tr> </table>
Когда Concordion анализирует документ, он выполняет addUser () для каждой строки первой таблицы, а затем устанавливает для searchString значение J. Затем Concordion выполнит функцию поиска, которая должна возвратить объект Iterable с предсказуемым порядком итерации (например, List, LinkedHashSet или TreeSet), verifyRows запускается для каждого элемента коллекции и запускает команду assertEquals.
пример
Давайте создадим рабочую среду Eclipse и следуем приведенным ниже инструкциям, чтобы создать приложение Concordion.
шаг | Описание |
---|---|
1 | Создайте проект с именем concordion и создайте пакет com.tutorialspoint в папке src в созданном проекте. |
2 | Добавьте необходимые библиотеки Concordion, используя опцию Add External JARs, как описано в главе Concordion — First Application . |
3 | Создайте Java-класс System в пакете com.tutorialspoint . |
4 | Создайте класс Fixture SystemFixture в пакете specs.tutorialspoint . |
5 | Создать спецификацию html System.html в пакете specs.tutorialspoint . |
6 | Последний шаг — создать содержимое всех файлов Java и файла спецификации и запустить приложение, как описано ниже. |
Вот содержимое файла System.java —
package com.tutorialspoint; import java.util.HashSet; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; public class System { private Set<String> users = new HashSet<String>(); public void addUser(String username) { users.add(username); } public Iterable<String> search(String searchString) { SortedSet<String> matches = new TreeSet<String>(); for (String username : users) { if (username.contains(searchString)) { matches.add(username); } } return matches; } }
Ниже приводится содержание файла SystemFixture.java —
package specs.tutorialspoint; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; import com.tutorialspoint.System; @RunWith(ConcordionRunner.class) public class SystemFixture { System system = new System(); public void addUser(String username) { system.addUser(username); } public Iterable<String> search(String searchString) { return system.search(searchString); } }
Ниже приводится содержание файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>System Specifications</h1> <p>We are building specifications for our online order tracking application.</p> <p>Following is the requirement to add a partial search capability on user names:</p> <div class = "example"> <h3>Example</h3> <table concordion:execute = "addUser(#username)"> <tr><th concordion:set = "#username">Username</th></tr> <tr><td>Robert De</td></tr> <tr><td>John Diere</td></tr> <tr><td>Julie Re</td></tr> </table> <p>Search for "<b concordion:set = "#searchString">J</b>" should return:</p> <table concordion:verifyRows = "#username : search(#searchString)"> <tr><th concordion:assertEquals = "#username">Matching Usernames</th></tr> <tr><td>John Diere</td></tr> <tr><td>Julie Re</td></tr> </table> </div> </body> </html>
Как только вы закончите с созданием исходного кода и файлов спецификации, давайте запустим приложение как JUnit Test. Если с вашим приложением все в порядке, оно даст следующий результат:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html Successes: 2, Failures: 0
System.html — это результат теста Concordion.
Concordion — Run Command
Команда запуска Concordion может использоваться для связывания нескольких спецификаций и отображения их на одной центральной странице. Эта команда может запускать все спецификации, отображая фон ссылки зеленым / красным / серым в зависимости от ситуации.
Теперь мы собираемся создать две спецификации и связать их вместе. Мы будем повторно использовать спецификации, созданные в Concordion — Выполнение по списку и Concordion — Выполнение по главам таблицы, в качестве технических характеристик системы и спецификаций калькулятора.
пример
Давайте создадим рабочую среду Eclipse и следуем приведенным ниже инструкциям, чтобы создать приложение Concordion.
шаг | Описание |
---|---|
1 | Создайте проект с именем concordion и создайте пакет com.tutorialspoint в папке src в созданном проекте. |
2 | Добавьте необходимые библиотеки Concordion, используя опцию Add External JARs, как описано в главе Concordion — First Application . |
3 | Создайте Java-класс System в пакете com.tutorialspoint . |
4 | Создайте классы Fixture SystemFixture , CalculatorFixture в пакете specs.tutorialspoint . |
5 | Создайте html-файлы спецификаций System.html , Calculator.html в пакете specs.tutorialspoint . |
6 | Последний шаг — создать содержимое всех файлов Java и файла спецификации и запустить приложение, как описано ниже. |
Вот содержимое файла System.java —
package com.tutorialspoint; import org.concordion.api.MultiValueResult; public class System { public MultiValueResult split(String userName){ MultiValueResult result = new MultiValueResult(); String[] words = userName.split(" "); result.with("firstName", words[0]).with("lastName", words[1]); return result; } public int sum(int firstNumber, int secondNumber) { return firstNumber + secondNumber; } }
Ниже приводится содержание файла SystemFixture.java —
package specs.tutorialspoint; import org.concordion.api.MultiValueResult; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; import com.tutorialspoint.System; @RunWith(ConcordionRunner.class) public class SystemFixture { System system = new System(); public MultiValueResult split(String userName){ return system.split(userName); } }
Ниже приводится содержание файла CalculatorFixture.java —
package specs.tutorialspoint; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith; import com.tutorialspoint.System; @RunWith(ConcordionRunner.class) public class CalculatorFixture { System system = new System(); public int sum(int firstNumber, int secondNumber) { return system.sum(firstNumber, secondNumber); } }
Ниже приводится содержание файла System.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>System Specifications</h1> <p>We are building specifications for our online order tracking application.</p> <p>Following is the requirement to split full name of a logged in user to its constituents by splitting name by whitespace:</p> <div class = "example"> <h3>Example</h3> <ul> <li>The full name <span concordion:execute = "#result = split(#TEXT)"> Robert De</span> is to be splited as <ul> <li><span concordion:assertEquals = "#result.firstName"> Robert</span></li> <li><span concordion:assertEquals = "#result.lastName"> De</span></li> </ul> </li> <li>The full name <span concordion:execute = "#result = split(#TEXT)"> John Diere</span> is to be splited as <ul> <li><span concordion:assertEquals = "#result.firstName"> John</span></li> <li><span concordion:assertEquals = "#result.lastName"> Diere</span></li> </ul> </li> </ul> </div> <a concordion:run = "concordion" href = "Calculator.html"> Calculator Service Specifications</a> </body> </html>
Ниже приводится содержание файла Calculator.html —
<html xmlns:concordion = "http://www.concordion.org/2007/concordion"> <head> <link href = "../concordion.css" rel = "stylesheet" type = "text/css" /> </head> <body> <h1>Calculator Specifications</h1> <p>We are building online calculator support in our website.</p> <p>Following is the requirement to add two numbers:</p> <div class = "example"> <h3>Example</h3> <table> <tr> <th>First Number</th> <th>Second Number</th> <th>Sum</th> </tr> <tr concordion:execute = "#result = sum(#firstNumber, #secondNumber)"> <td concordion:set = "#firstNumber">2</td> <td concordion:set = "#secondNumber">3</td> <td concordion:assertEquals = "#result">5</td> </tr> <tr concordion:execute = "#result = sum(#firstNumber, #secondNumber)"> <td concordion:set = "#firstNumber">4</td> <td concordion:set = "#secondNumber">5</td> <td concordion:assertEquals = "#result">9</td> </tr> </table> </div> </body> </html>
Как только вы закончите с созданием файлов исходного кода и спецификации, давайте запустим приложение как JUnit Test. Если с вашим приложением все в порядке, оно даст следующий результат:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html Successes: 2, Failures: 0 C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html Successes: 6, Failures: 0
System.html — это результат теста Concordion.
Нажмите на ссылку Технические характеристики калькулятора. Вы увидите следующий вывод —