Учебники

Concordion — Краткое руководство

Конкордеон — Обзор

Concordion — это мощный инструмент для написания и управления автоматическими приемочными тестами в проектах на основе Java. Он напрямую интегрируется с платформой JUnit, что делает его готовым для использования со всеми популярными средами разработки на основе JAVA, такими как Netbeans, Eclipse, IntelliJ IDEA.

Активная спецификация программного обеспечения

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

Активная спецификация в Concordion состоит из двух частей:

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

  2. Приемочные тесты написаны на языке 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

После успешного запуска, если все в порядке, он должен отобразить следующий результат:

Eclipse Home page

Шаг 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» следующим образом:

Путь сборки 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.

Исходные файлы concordion

Вот содержимое файла 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 в исходную папку спецификации.

файлы спецификаций concordion

Вот содержимое файла 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.

Команда Concordion assertEquals Выходные данные

Успехи: 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 assertTrue

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 assertFalse

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

Конкордеон — возвращающийся объект

Команда 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

Конкордион — Возвращение карты

Команда 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 Возвращение вывода карты

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 может быть использована для запуска операции устройства 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 может быть использована для запуска операции устройства 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 Выполнить в списке вывода

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 verifyRows

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.

Вывод команды запуска concordion

Нажмите на ссылку Технические характеристики калькулятора. Вы увидите следующий вывод —