Конкордеон — Обзор
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.
Нажмите на ссылку Технические характеристики калькулятора. Вы увидите следующий вывод —


















