Concordione - Guida rapida

Cos'è la Concordione?

Concordion è un potente strumento per scrivere e gestire test di accettazione automatizzati in progetti basati su Java. Si integra direttamente con il framework JUnit, rendendolo pronto per essere utilizzato con tutti i popolari IDE basati su JAVA come Netbeans, Eclipse, IntelliJ IDEA.

Specifiche software attive

La specifica del software attivo è un modo per specificare il comportamento di una funzionalità. Fornisce inoltre un modo per implementare e verificare le specifiche del software avendo una connessione con il sistema in fase di sviluppo.

Una specifica attiva in Concordion è di due parti:

  1. Un documento di requisiti scritto in modo pulito che descrive la funzionalità desiderata scritta utilizzando XHTML. Le specifiche basate su XHTML contengono descrizioni delle funzionalità fornite con esempi di test di accettazione. I dati di esempio vengono contrassegnati utilizzando semplici tag HTML.

  2. I test di accettazione sono scritti in linguaggio Java chiamato codice dispositivo. Utilizzando un'estensione Concordion di un caso di test JUnit standard, i test vengono implementati. È responsabilità di Fixture Code trovare i dati dell'esempio contrassegnati da tag e utilizzarli per verificare il software in fase di sviluppo.

Uscita di Cncordion

Quando vengono eseguiti i test delle specifiche attive Concordion, i file XHTML outpu mostrano la specifica originale ei risultati dei test. I test riusciti vengono evidenziati utilizzando il colore "verde" e i test falliti vengono evidenziati utilizzando "rosso". Poiché qualsiasi cambiamento nel sistema comporterà il fallimento del test, il che aiuta a identificare le specifiche da aggiornare, Concordion definisce queste specifiche come specifiche attive. Pertanto le specifiche sono sempre aggiornate.

Caratteristiche principali

Di seguito sono riportate le caratteristiche principali di Concordion:

  • Specifications as documentation- La specifica Concordion essendo altamente leggibile può essere utilizzata come documentazione di sistema attivo. Poiché le specifiche basate su Concordion sono scritte in HTML, questi documenti possono essere collegamenti ipertestuali.

  • Specifications are live- La specifica Concordion contiene esempi funzionanti di comportamento che vengono eseguiti contro il sistema. Le specifiche sono codificate a colori in modo che chiunque possa vedere se gli esempi funzionano o meno. L'esecuzione regolare delle specifiche Concordion rende la documentazione aggiornata.

  • Separate "what?" from "how?"- La specifica di concordanza aiuta a mantenere la separazione tra l'implementazione e il comportamento richiesto del sistema. Fornisce flessibilità che l'implementazione può essere modificata in seguito.

  • Simple to learn- La libreria Concordion è progettata mantenendo la curva di apprendimento breve e concisa. Ha pochissimi comandi da apprendere e gli esempi sono automatizzati utilizzando i test JUnit in modo che i test possano essere eseguiti facilmente e possano essere facilmente integrati con i progetti esistenti.

  • Powerful Customization- Concordion fornisce estensioni API che consentono di aggiungere funzionalità. Ad esempio, i fogli di calcolo Excel possono essere utilizzati come specifiche, è possibile aggiungere screenshot all'output, visualizzare le informazioni di registrazione e molto altro ancora.

Questo tutorial ti guiderà su come preparare un ambiente di sviluppo per iniziare a lavorare con Spring Framework. Questo tutorial ti insegnerà anche come configurare JDK, Tomcat ed Eclipse sulla tua macchina prima di configurare Spring Framework:

Passaggio 1: configurazione del Java Development Kit (JDK):

È possibile scaricare l'ultima versione di SDK dal sito Java di Oracle: Download di Java SE . Troverai le istruzioni per l'installazione di JDK nei file scaricati, segui le istruzioni fornite per installare e configurare il setup. Infine, impostare le variabili di ambiente PATH e JAVA_HOME in modo che facciano riferimento alla directory che contiene java e javac, tipicamente java_install_dir / bin e java_install_dir rispettivamente.

Se stai utilizzando Windows e hai installato JDK in C: \ jdk1.7.0_75, dovresti inserire la seguente riga nel tuo file C: \ autoexec.bat.

set PATH=C:\jdk1.7.0_75\bin;%PATH%
set JAVA_HOME=C:\jdk1.7.0_75

In alternativa, su Windows NT / 2000 / XP, puoi anche fare clic con il pulsante destro del mouse su Risorse del computer, selezionare Proprietà, quindi Avanzate, quindi Variabili d'ambiente. Quindi, si aggiorna il valore PATH e si preme il pulsante OK.

Su Unix (Solaris, Linux, ecc.), Se l'SDK è installato in /usr/local/jdk1.7.0_75 e si utilizza la shell C, inserire quanto segue nel file .cshrc.

setenv PATH /usr/local/jdk1.7.0_75/bin:$PATH
setenv JAVA_HOME /usr/local/jdk1.7.0_75

In alternativa, se utilizzi un IDE (Integrated Development Environment) come Borland JBuilder, Eclipse, IntelliJ IDEA o Sun ONE Studio, compila ed esegui un semplice programma per confermare che l'IDE sa dove hai installato Java, altrimenti esegui la corretta configurazione come indicato nel documento dell'IDE.

Passaggio 2: configurazione dell'IDE di Eclipse

Tutti gli esempi in questo tutorial sono stati scritti utilizzando Eclipse IDE. Quindi ti suggerirei di avere l'ultima versione di Eclipse installata sulla tua macchina.

Per installare Eclipse IDE, scarica gli ultimi binari Eclipse da http://www.eclipse.org/downloads/. Dopo aver scaricato l'installazione, decomprimere la distribuzione binaria in una posizione comoda. Ad esempio in C: \ eclipse su Windows, o / usr / local / eclipse su Linux / Unix e infine imposta la variabile PATH in modo appropriato.

Eclipse può essere avviato eseguendo i seguenti comandi sulla macchina Windows, oppure puoi semplicemente fare doppio clic su eclipse.exe

%C:\eclipse\eclipse.exe

Eclipse può essere avviato eseguendo i seguenti comandi su una macchina Unix (Solaris, Linux, ecc.):

$/usr/local/eclipse/eclipse

Dopo un avvio riuscito, se tutto va bene, dovrebbe visualizzare il seguente risultato:

Passaggio 3: scarica l'archivio Junit

Scarica l'ultima versione del file jar JUnit da http://www.junit.org. Al momento della stesura di questo tutorial, ho scaricato Junit-4.10.jar e l' ho copiato nella cartella C: \> JUnit.

OS Nome dell'archivio
finestre junit4.10.jar
Linux junit4.10.jar
Mac junit4.10.jar

Passaggio 4: impostare l'ambiente JUnit

Impostare il JUNIT_HOMEvariabile di ambiente per puntare alla posizione della directory di base in cui JUNIT jar è archiviato sulla macchina. Supponendo, abbiamo memorizzato junit4.10.jar nella cartella JUNIT su vari sistemi operativi come segue.

OS Produzione
finestre Imposta la variabile d'ambiente JUNIT_HOME su C: \ JUNIT
Linux esportare JUNIT_HOME = / usr / local / JUNIT
Mac export JUNIT_HOME = / Library / JUNIT

Passaggio 5: impostare la variabile CLASSPATH

Impostare il CLASSPATHvariabile di ambiente in modo che punti alla posizione del jar JUNIT. Supponendo, abbiamo memorizzato junit4.10.jar nella cartella JUNIT su vari sistemi operativi come segue.

OS Produzione
finestre Imposta la variabile d'ambiente CLASSPATH su% CLASSPATH%;% JUNIT_HOME% \ junit4.10.jar;.;
Linux export CLASSPATH =$CLASSPATH:$JUNIT_HOME / junit4.10.jar :.
Mac export CLASSPATH =$CLASSPATH:$JUNIT_HOME / junit4.10.jar :.

Passaggio 6: configurazione delle librerie di concordion

Ora, se tutto va bene, puoi procedere alla configurazione delle tue librerie Concordion. Di seguito sono riportati i semplici passaggi per scaricare e installare il framework sul tuo computer.

Scarica l'ultima versione dei binari del framework Concordion da http://dl.bintray.com/concordion/downloads/concordion-1.5.1.zip.

Al momento della stesura di questo tutorial, ho scaricato concordion-1.5.1 sulla mia macchina Windows e quando decomprimi il file scaricato ti darà la seguente struttura di directory all'interno di E: \ concordion-1.5.1 come segue.

  • lib - Cartella della libreria

    • hamcrest-core-1.3.jar

    • junit-4.12.jar

    • ognl-2.6.9.jar

    • xom-1.2.5.jar

  • src - Cartella del codice sorgente

    • main

    • test

    • test-dummies

  • concordion-1.5.1.jar

Troverai tutte le librerie di dipendenze Concordion nella directory E: \ concordion \ lib. Assicurati di impostare correttamente la tua variabile CLASSPATH su questa directory altrimenti incontrerai problemi durante l'esecuzione dell'applicazione. Se si utilizza Eclipse, non è necessario impostare CLASSPATH perché tutte le impostazioni verranno eseguite tramite Eclipse.

Una volta che hai finito con questo ultimo passaggio, sei pronto per procedere per il tuo primo esempio di concordia che vedrai nel prossimo capitolo.

Concordione - Prima applicazione

Cominciamo a programmare con Concordion. Prima di iniziare a scrivere il tuo primo esempio usando Concordion, devi assicurarti di aver impostato correttamente il tuo ambiente Concordion come spiegato nel tutorial Concordion - Environment Setup . Diamo anche per scontato che tu abbia un po 'di conoscenza operativa di Eclipse IDE.

Procediamo quindi a scrivere una semplice domanda Concordion che stamperà il seguente test di accettazione:

Example
When Robert logs in the system, a greeting "Hello Robert!" is displayed.

Passaggio 1: creare un progetto Java

Il primo passo è creare un semplice progetto Java utilizzando Eclipse IDE. Segui l'opzioneFile → New → Project e infine seleziona Java Projectprocedura guidata dall'elenco delle procedure guidate. Ora assegna un nome al tuo progetto comeConcordion utilizzando la finestra della procedura guidata come segue:

Una volta che il tuo progetto è stato creato con successo, avrai il seguente contenuto nel tuo file Project Explorer -

Passaggio 2: aggiungere le librerie richieste

Aggiungiamo la concordia e le sue dipendenze nel nostro progetto. Per fare ciò, fai clic con il pulsante destro del mouse sul nome del progettoconcordion e quindi seguire le opzioni disponibili nel menu contestuale: Build Path → Configure Build Path per visualizzare la finestra Percorso build Java come segue:

Ora usa Add External JARs pulsante disponibile sotto Libraries scheda per aggiungere il seguente JAR principale dalla cartella Concordion.

  • concordion-1.5.1
  • hamcrest-core-1.3
  • junit-4.12
  • ognl-2.6.9
  • xom-1.2.5

Passaggio 3: creare file di origine

Ora creiamo i file sorgente effettivi sotto concordionprogetto. Innanzitutto, dobbiamo creare un pacchetto chiamatocom.tutorialspoint. A tale scopo, fare clic con il pulsante destro del mouse susrc nella sezione Esplora pacchetti e segui l'opzione: New → Package.

Successivamente, creeremo System .java file nel pacchetto com.tutorialspoint.

Ecco il contenuto di System.java file -

package com.tutorialspoint;

public class System {
   public String getGreeting(String userName){
      return "Hello " + userName + "!";
   }
}

Passaggio 4: creare file di specifiche

Ora creiamo dei file di specifica effettivi sotto concordionprogetto. Innanzitutto, dobbiamo creare una nuova cartella di origine denominataspecs. Questa cartella conterrà file di specifiche come JUnitFixture o test runner e file html che sono specifiche. Ora dobbiamo creare un pacchetto chiamatospecs.tutorialspoint. A tale scopo, fare clic con il pulsante destro del mouse suspec nella sezione Esplora pacchetti e segui l'opzione: New → Package.

Successivamente, creeremo System.html e SystemFixture.javafile nel pacchetto specs.tutorialspoint. Successivamente, aggiungeremoconcordion.css nella cartella di origine delle specifiche.

Ecco il contenuto del file System.html file -

<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>

Ecco il contenuto del file SystemFixture.java file -

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);
   }
}

Ecco il contenuto del file concordion.css file -

* {
   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;
}

Ci sono due punti importanti da notare sul file html delle specifiche e sul dispositivo di prova:

  • System.html è il file html delle specifiche che utilizza lo spazio dei nomi concordion.

<html xmlns:concordion="http://www.concordion.org/2007/concordion">
  • System.html utilizza concordion: set command per impostare un valore delle variabili temporanee userName in modo che sia Robert. In questo caso, userName è il parametro da passare al metodo getGreeting del dispositivo di sistema.

When <span concordion:set="#userName">Robert</span> logs in the system
  • System.html utilizza il comando concordion: assertEquals per verificare che l'output della funzione getGreeting (userName) sia Hello Robert !.

a greeting "<span concordion:assertEquals="getGreeting(#userName)">
Hello Robert!</span>" is displayed.
  • SystemFixture è un dispositivo di prova JUnit annotato con ConcordionRunner.class.

@RunWith(ConcordionRunner.class)
public class SystemFixture {
  • SystemFixture ha un metodo getGreeting che restituisce i saluti all'utente.

public String getGreeting(String userName){
   return system.getGreeting(userName);
}

Passaggio 5: esecuzione del programma

Fare clic con il pulsante destro del mouse sull'area del contenuto di SystemFixture e selezionare Run as > JUnit Test Case. Verrà visualizzato il seguente output con successo junit.

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 1, Failures: 0

System.html è l'output dell'esecuzione di test Concordion.

Congratulazioni, hai creato con successo il tuo primo test di accettazione Concordion. Inoltre, iniziamo a fare qualcosa di più interessante nei prossimi capitoli.

Concordione: imposta il comando

Il comando Concordion set viene utilizzato per memorizzare variabili temporanee che possono essere utilizzate in altri comandi Concordion.

Considera il seguente requisito:

The Sum of two numbers 2 and 3 will be 5.

Se vogliamo che i numeri 2 e 3 siano come parametri e li passiamo alla funzione sum come parametro in modo che possano essere verificati rispetto al risultato restituito dal sistema, allora possiamo usare concordion: set command all'interno di tag span attorno ai numeri.

<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>

Quando Concordion analizza il documento, imposterà una variabile temporanea #firstNumber come valore "2" e #secondNumber come valore "3" e quindi chiamerà il metodo sum () con parametri come #firstNumber e #secondNumber e verificarlo il risultato è uguale a "5".

Esempio

Mettiamo in atto un IDE Eclipse funzionante e seguiamo i passaggi indicati di seguito per creare un'applicazione Concordion -

Passo Descrizione
1 Crea un progetto con un nome concordion e crea un pacchetto com.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Concordion richieste utilizzando l' opzione Add External JARs come spiegato nel capitolo Concordion - First Application .
3 Crea un sistema di classi Java nel pacchetto com.tutorialspoint .
4 Crea la classe Fixture SystemFixture nel pacchetto specs.tutorialspoint .
5 Crea specifica html System.html nel pacchetto specs.tutorialspoint .
6 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file di specificazione ed eseguire l'applicazione come spiegato di seguito.

Ecco il contenuto del file System.java -

package com.tutorialspoint;
public class System {
   public int sum(int firstNumber, int secondNumber) {
      return firstNumber + secondNumber;
   }
}

Di seguito è riportato il contenuto del file 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);
   }
}

Di seguito è riportato il contenuto del file 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>

Una volta terminata la creazione dei file sorgente e delle specifiche, eseguiamo l'applicazione come test JUnit. Se tutto va bene con la tua applicazione, produrrà il seguente risultato:

C:\DOCUME>1\ADMINI>1\LOCALS>1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 1, Failures: 0

System.html è l'output dell'esecuzione del test di concordanza.

Concordione - assertEquals Command

Il comando Concordion assertEquals viene utilizzato per controllare la proprietà del bean Java o il risultato del metodo rispetto a un valore specificato.

Considera il seguente requisito:

The sum of two numbers 2 and 3 will be 5.

Se vogliamo che i numeri 2 e 3 siano come parametri e li passiamo alla funzione sum come parametro in modo che possa essere verificato rispetto al risultato come 5 restituito dal sistema, allora possiamo usare concordion: assertEquals comando all'interno del tag span attorno alla funzione 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>

Quando Concordion analizza il documento, imposterà una variabile temporanea #firstNumber come valore "2" e #secondNumber come valore "3" utilizzando il comando set e quindi richiamerà il metodo sum () con parametri come #firstNumber e #secondNumber e verificare che il risultato sia uguale a "5" utilizzando il comando assertEquals.

Esempio

Cerchiamo di avere l'IDE Eclipse funzionante e seguire i seguenti passaggi per creare un'applicazione Concordion:

Passo Descrizione
1 Crea un progetto con un nome concordion e crea un pacchetto com.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Concordion richieste utilizzando l' opzione Add External JARs come spiegato nel capitolo Concordion - First Application .
3 Crea un sistema di classi Java nel pacchetto com.tutorialspoint .
4 Crea la classe Fixture SystemFixture nel pacchetto specs.tutorialspoint .
5 Crea specifica html System.html nel pacchetto specs.tutorialspoint .
6 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file di specificazione ed eseguire l'applicazione come spiegato di seguito.

Ecco il contenuto del file System.java -

package com.tutorialspoint;
public class System {
   public int sum(int firstNumber, int secondNumber) {
      return firstNumber + secondNumber;
   }
}

Di seguito è riportato il contenuto del file 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);
   }
}

Di seguito è riportato il contenuto del file 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>

Una volta terminata la creazione dei file sorgente e delle specifiche, eseguiamo l'applicazione come JUnit Test. Se tutto va bene con la tua applicazione, allora mostrerà il seguente risultato:

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 1, Failures: 0

System.html è l'output dell'esecuzione di test Concordion.

Successi: 1, Errori: 0

Concordione - assertTrue Command

Il comando Concordion assertTrue viene utilizzato quando l'apparecchiatura deve conoscere il risultato atteso per eseguire un test.

Considera il seguente requisito:

User Name : Robert De
The User name starts with R.
The User name starts with S == false.

Se vogliamo che venga eseguito un test sul nome utente e controlliamo se il nome utente inizia con R oppure no.

<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>

Quando Concordion analizza il documento, imposterà una variabile temporanea #userName come valore "Robert De". Quindi controllerà se userName inizia con la lettera specificata dalla variabile #letter impostata nel comando successivo.

Esempio

Mettiamo in atto un IDE Eclipse funzionante e seguiamo i passaggi indicati di seguito per creare un'applicazione Concordion -

Passo Descrizione
1 Crea un progetto con un nome concordion e crea un pacchetto com.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Concordion richieste utilizzando l' opzione Add External JARs come spiegato nel capitolo Concordion - First Application .
3 Crea un sistema di classi Java nel pacchetto com.tutorialspoint .
4 Crea la classe Fixture SystemFixture nel pacchetto specs.tutorialspoint .
5 Crea specifica html System.html nel pacchetto specs.tutorialspoint .
6 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file delle specifiche ed eseguire l'applicazione come spiegato di seguito.

Ecco il contenuto del file System.java -

package com.tutorialspoint;
public class System {   
}

Di seguito è riportato il contenuto del file SystemFixture.java -

package specs.tutorialspoint;

import org.concordion.integration.junit4.ConcordionRunner;
import org.junit.runner.RunWith;

@RunWith(ConcordionRunner.class)

public class SystemFixture {
}

Di seguito è riportato il contenuto del file 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>

Una volta terminata la creazione dei file sorgente e delle specifiche, eseguiamo l'applicazione come JUnit Test. Se tutto va bene con la tua applicazione, produrrà il seguente risultato:

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 1, Failures: 1

System.html è l'output dell'esecuzione di test Concordion.

Concordion - assertFalse Command

Il comando Concordion assertFalse viene utilizzato quando l'apparecchiatura deve conoscere il risultato atteso per poter eseguire un test.

Considera il seguente requisito:

User Name : Robert De
The User name does not start with S.

Se vogliamo che venga eseguito un test sullo User Name e controlliamo che il nome utente non inizi con 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>

Quando Concordion analizza il documento, imposterà una variabile temporanea #userName come valore "Robert De". Quindi, controllerà se userName inizia con la lettera specificata dalla variabile #letter impostata nel comando successivo.

Esempio

Mettiamo in atto un IDE Eclipse funzionante e seguiamo i passaggi indicati di seguito per creare un'applicazione Concordion -

Passo Descrizione
1 Crea un progetto con un nome concordion e crea un pacchetto com.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Concordion richieste utilizzando l' opzione Add External JARs come spiegato nel capitolo Concordion - First Application .
3 Crea un sistema di classi Java nel pacchetto com.tutorialspoint .
4 Crea la classe Fixture SystemFixture nel pacchetto specs.tutorialspoint .
5 Crea specifica html System.html nel pacchetto specs.tutorialspoint .
6 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file delle specifiche ed eseguire l'applicazione come spiegato di seguito.

Ecco il contenuto del file System.java -

package com.tutorialspoint;
public class System {   
}

Di seguito è riportato il contenuto del file SystemFixture.java -

package specs.tutorialspoint;

import org.concordion.integration.junit4.ConcordionRunner;
import org.junit.runner.RunWith;

@RunWith(ConcordionRunner.class)

public class SystemFixture {
}

Di seguito è riportato il contenuto del file 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>

Una volta terminata la creazione dei file sorgente e delle specifiche, eseguiamo l'applicazione come JUnit Test. Se tutto va bene con la tua applicazione, produrrà il seguente risultato:

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 1, Failures: 0

System.html è l'output dell'esecuzione di test Concordion.

Concordion: esegui il comando

Il comando Concordion execute viene utilizzato per eseguire l'operazione di concordion fixture. Considera il seguente requisito:

The sum of two numbers 2 and 3 will be 5.

Se vogliamo scrivere una specifica per una funzione di somma che accetterà due numeri e restituirà la loro somma, la specifica sarà la seguente:

<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>

Quando Concordion analizza il documento, imposterà una variabile temporanea #firstNumber come valore "2" e #secondNumber come valore "3" e quindi eseguirà il metodo sum () con parametri come #firstNumber e #secondNumber utilizzando il comando execute comando e imposta il risultato nella variabile #result e verifica che la variabile #result sia uguale a "5".

Esempio

Mettiamo in atto un IDE Eclipse funzionante e seguiamo i passaggi indicati di seguito per creare un'applicazione Concordion -

Passo Descrizione
1 Crea un progetto con un nome concordion e crea un pacchetto com.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Concordion richieste utilizzando l' opzione Add External JARs come spiegato nel capitolo Concordion - First Application .
3 Crea un sistema di classi Java nel pacchetto com.tutorialspoint .
4 Crea la classe Fixture SystemFixture nel pacchetto specs.tutorialspoint .
5 Crea specifica html System.html nel pacchetto specs.tutorialspoint .
6 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file delle specifiche ed eseguire l'applicazione come spiegato di seguito.

Ecco il contenuto del file System.java -

package com.tutorialspoint;
public class System {
   public int sum(int firstNumber, int secondNumber) {
      return firstNumber + secondNumber;
   }
}

Di seguito è riportato il contenuto del file 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);
   }
}

Di seguito è riportato il contenuto del file 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>

Una volta terminata la creazione dei file sorgente e delle specifiche, eseguiamo l'applicazione come JUnit Test. Se tutto va bene con la tua applicazione, produrrà il seguente risultato:

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 1, Failures: 0

System.html è l'output dell'esecuzione di test Concordion.

Concordione - Restituzione dell'oggetto

Il comando Concordion execute può essere utilizzato per ottenere il risultato di un comportamento sotto forma di oggetto utilizzando il quale possiamo ottenere più output di un comportamento. Ad esempio, considera il seguente requisito:

The full name Robert De is to be broken into first name Robert and last name De.

Qui abbiamo bisogno di una funzione di divisione che accetti un nome utente e restituisca un oggetto risultato avente il nome e il cognome come proprietà in modo da poterli utilizzare.

Se vogliamo scrivere una specifica per una tale funzione di divisione che si aspetta un nome utente e restituisce un oggetto risultato, la seguente sarà la specifica:

<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>

Quando Concordion analizza il documento, imposterà il valore della variabile speciale #TEXT come valore dell'elemento corrente come "Robert De" e lo passerà alla funzione split. Quindi eseguirà il metodo split () con parametri come #TEXT utilizzando il comando execute e imposterà il risultato nella variabile #result e utilizzando l'oggetto risultato, stamperà le proprietà firstName e lastName come output.

Esempio

Mettiamo in atto un IDE Eclipse funzionante e seguiamo i passaggi indicati di seguito per creare un'applicazione Concordion -

Passo Descrizione
1 Crea un progetto con il nome concordion e crea un pacchetto com.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Concordion richieste utilizzando l' opzione Add External JARs come spiegato nel capitolo Concordion - First Application .
3 Crea sistema di classe Java , risultato nel pacchetto com.tutorialspoint .
4 Crea la classe Fixture SystemFixture nel pacchetto specs.tutorialspoint .
5 Crea specifica html System.html nel pacchetto specs.tutorialspoint .
6 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file delle specifiche ed eseguire l'applicazione come spiegato di seguito.

Ecco il contenuto del file 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;
   } 
}

Ecco il contenuto del file 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;
   }
}

Di seguito è riportato il contenuto del file 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);
   }  
}

Di seguito è riportato il contenuto del file 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>

Una volta terminata la creazione dei file sorgente e delle specifiche, eseguiamo l'applicazione come JUnit Test. Se tutto va bene con la tua applicazione, produrrà il seguente risultato:

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 1, Failures: 0

System.html è l'output dell'esecuzione di test Concordion.

Concordione - Mappa di ritorno

Il comando Concordion execute può essere utilizzato per ottenere il risultato di un comportamento sotto forma di una mappa utilizzando la quale possiamo ottenere più output di un comportamento. Ad esempio, considera il seguente requisito:

The full name Robert De is to be broken into its first name Robert and last name De.

Qui abbiamo bisogno di una funzione spillata che accetti un nome utente e restituisca un oggetto Map con firstName e lastName come chiavi con valori corrispondenti in modo da poterli utilizzare.

Se vogliamo scrivere una specifica per una tale funzione di divisione che accetterà un nome utente e restituirà un oggetto risultato, la seguente sarà la specifica:

<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>

Quando Concordion analizza il documento, imposterà il valore della variabile speciale #TEXT come valore dell'elemento corrente come "Robert De" e lo passerà alla funzione split. Quindi eseguirà il metodo split () con parametri come #TEXT utilizzando il comando execute e imposterà il risultato nella variabile #result e utilizzando la mappa dei risultati, stamperà i valori firstName e lastName come output.

Esempio

Mettiamo in atto un IDE Eclipse funzionante e seguiamo i passaggi indicati di seguito per creare un'applicazione Concordion -

Passo Descrizione
1 Crea un progetto con un nome concordion e crea un pacchetto com.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Concordion richieste utilizzando l' opzione Add External JARs come spiegato nel capitolo Concordion - First Application .
3 Crea un sistema di classi Java nel pacchetto com.tutorialspoint .
4 Crea la classe Fixture SystemFixture nel pacchetto specs.tutorialspoint .
5 Crea specifica html System.html nel pacchetto specs.tutorialspoint .
6 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file delle specifiche ed eseguire l'applicazione come spiegato di seguito.

Ecco il contenuto del file 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;
   }
}

Di seguito è riportato il contenuto del file 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);
   }  
}

Di seguito è riportato il contenuto del file 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>

Una volta terminata la creazione dei file sorgente e delle specifiche, eseguiamo l'applicazione come JUnit Test. Se tutto va bene con la tua applicazione, produrrà il seguente risultato:

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 1, Failures: 0

System.html è l'output dell'esecuzione di test Concordion.

Concordione - Restituzione di MultiValueResult

Il comando Concordion execute può essere utilizzato per ottenere il risultato di un comportamento sotto forma di una mappa utilizzando la quale possiamo ottenere più output di un comportamento. Ad esempio, considera il seguente requisito:

The full name Robert De is to be broken into its first name Robert and last name De.

Qui abbiamo bisogno di una funzione split che accetti un nome utente e restituisca un oggetto Map con firstName e lastName come chiavi con i loro valori corrispondenti in modo da poterli utilizzare.

Se vogliamo scrivere una specifica per una tale funzione di divisione che accetterà un nome utente e restituirà un oggetto risultato, la specifica sarà la seguente:

<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>

Quando Concordion analizza il documento, imposterà il valore della variabile speciale #TEXT come valore dell'elemento corrente come "Robert De" e lo passerà alla funzione split. Quindi eseguirà il metodo split () con parametri come #TEXT usando il comando execute e imposterà il risultato nella variabile #result e usando la mappa dei risultati, stamperà i valori firstName e lastName come output.

Esempio

Mettiamo in atto un IDE Eclipse funzionante e seguiamo i passaggi indicati di seguito per creare un'applicazione Concordion -

Passo Descrizione
1 Crea un progetto con il nome concordion e crea un pacchetto com.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Concordion richieste utilizzando l' opzione Add External JARs come spiegato nel capitolo Concordion - First Application .
3 Crea un sistema di classi Java nel pacchetto com.tutorialspoint .
4 Crea la classe Fixture SystemFixture nel pacchetto specs.tutorialspoint .
5 Crea specifica html System.html nel pacchetto specs.tutorialspoint .
6 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file delle specifiche ed eseguire l'applicazione come spiegato di seguito.

Ecco il contenuto del file 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;
   }
}

Di seguito è riportato il contenuto del file 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);
   }  
}

Di seguito è riportato il contenuto del file 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>

Una volta terminata la creazione dei file sorgente e delle specifiche, eseguiamo l'applicazione come JUnit Test. Se tutto va bene con la tua applicazione, produrrà il seguente risultato:

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 2, Failures: 0

System.html è l'output dell'esecuzione di test Concordion.

Concordione - Esegui sul tavolo

Il comando Concordion execute può essere utilizzato per eseguire l'operazione del dispositivo di concordion in modo ripetuto. Ad esempio, sarà utile se vogliamo illustrare un requisito con più esempi sotto forma di tabella.

Considera il seguente requisito:

<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>

Se vogliamo scrivere una specifica per una funzione di somma che accetterà due numeri e restituirà la loro somma, allora la specifica sarà la seguente:

<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>

Quando Concordion analizza il documento, imposterà una variabile temporanea #firstNumber come valore "2" e #secondNumber come valore "3". Quindi eseguirà il metodo sum () con parametri come #firstNumber e #secondNumber usando il comando execute e imposterà il risultato nella variabile #result e verificherà che la variabile #result sia uguale a "5". Questo processo viene ripetuto per ogni elemento della riga della tabella.

Esempio

Mettiamo in atto un IDE Eclipse funzionante e seguiamo i passaggi indicati di seguito per creare un'applicazione Concordion -

Passo Descrizione
1 Crea un progetto con un nome concordion e crea un pacchetto com.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Concordion richieste utilizzando l' opzione Add External JARs come spiegato nel capitolo Concordion - First Application .
3 Crea un sistema di classi Java nel pacchetto com.tutorialspoint .
4 Crea la classe Fixture SystemFixture nel pacchetto specs.tutorialspoint .
5 Crea specifica html System.html nel pacchetto specs.tutorialspoint .
6 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file delle specifiche ed eseguire l'applicazione come spiegato di seguito.

Ecco il contenuto del file System.java -

package com.tutorialspoint;
public class System {
   public int sum(int firstNumber, int secondNumber) {
      return firstNumber + secondNumber;
   }
}

Di seguito è riportato il contenuto del file 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);
   }
}

Di seguito è riportato il contenuto del file 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>

Una volta terminata la creazione dei file sorgente e delle specifiche, eseguiamo l'applicazione come JUnit Test. Se tutto va bene con la tua applicazione, produrrà il seguente risultato:

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 2, Failures: 0

System.html è l'output dell'esecuzione di test Concordion.

Concordion - Execute on List

Il comando Concordion execute può essere utilizzato per eseguire l'operazione del dispositivo di concordion in modo ripetuto. Ad esempio, sarà utile se vogliamo illustrare un requisito con più esempi sotto forma di elenco.

Considera il seguente requisito:

<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>

Se vogliamo scrivere una specifica per una funzione di divisione che dividerà un nome nel suo nome e cognome, allora la specifica sarà la seguente:

<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>

Quando Concordion analizza il documento, imposterà il valore della variabile speciale #TEXT come valore dell'elemento corrente come "Robert De" e lo passerà alla funzione split. Quindi eseguirà il metodo split () con parametri come #TEXT usando il comando execute e imposterà il risultato nella variabile #result e usando result, stamperà i valori firstName e lastName come output.

Esempio

Mettiamo in atto un IDE Eclipse funzionante e seguiamo i passaggi indicati di seguito per creare un'applicazione Concordion -

Passo Descrizione
1 Crea un progetto con un nome concordion e crea un pacchetto com.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Concordion richieste utilizzando l' opzione Add External JARs come spiegato nel capitolo Concordion - First Application .
3 Crea un sistema di classi Java nel pacchetto com.tutorialspoint .
4 Crea la classe Fixture SystemFixture nel pacchetto specs.tutorialspoint .
5 Crea specifica html System.html nel pacchetto specs.tutorialspoint .
6 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file delle specifiche ed eseguire l'applicazione come spiegato di seguito.

Ecco il contenuto del file 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;
   }
}

Di seguito è riportato il contenuto del file 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);
   }  
}

Di seguito è riportato il contenuto del file 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>

Una volta terminata la creazione dei file sorgente e delle specifiche, eseguiamo l'applicazione come JUnit Test. Se tutto va bene con la tua applicazione, produrrà il seguente risultato:

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 4, Failures: 0

System.html è l'output dell'esecuzione di test Concordion.

Concordione: comando verifyRows

Il comando Concordion verifyRows può essere utilizzato per controllare il contenuto di una raccolta restituita come risultato dal sistema. Ad esempio, se configuriamo un insieme di utenti nel sistema e facciamo una ricerca parziale su di essi, il sistema dovrebbe restituire gli elementi corrispondenti, altrimenti i nostri test di accettazione dovrebbero fallire.

Considera il seguente requisito:

<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>

Se vogliamo scrivere una specifica per tale funzione di ricerca che cercherà e restituirà una raccolta, la specifica sarà la seguente:

<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>

Quando Concordion analizza il documento, eseguirà addUser () su ogni riga della prima tabella e quindi imposterà searchString su J. Successivamente, Concordion eseguirà la funzione di ricerca che dovrebbe restituire un oggetto Iterable con un ordine di iterazione prevedibile, (ad es. a List, LinkedHashSet o TreeSet), verifyRows viene eseguito per ogni elemento della raccolta ed esegue il comando assertEquals.

Esempio

Mettiamo in atto un IDE Eclipse funzionante e seguiamo i passaggi indicati di seguito per creare un'applicazione Concordion -

Passo Descrizione
1 Crea un progetto con un nome concordion e crea un pacchetto com.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Concordion richieste utilizzando l' opzione Add External JARs come spiegato nel capitolo Concordion - First Application .
3 Crea un sistema di classi Java nel pacchetto com.tutorialspoint .
4 Crea la classe Fixture SystemFixture nel pacchetto specs.tutorialspoint .
5 Crea specifica html System.html nel pacchetto specs.tutorialspoint .
6 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file delle specifiche ed eseguire l'applicazione come spiegato di seguito.

Ecco il contenuto del file 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;
   }
}

Di seguito è riportato il contenuto del file 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);
   }
}

Di seguito è riportato il contenuto del file 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>

Una volta terminata la creazione dei file sorgente e delle specifiche, eseguiamo l'applicazione come JUnit Test. Se tutto va bene con la tua applicazione, produrrà il seguente risultato:

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 2, Failures: 0

System.html è l'output dell'esecuzione di test Concordion.

Concordione - Esegui comando

Il comando Concordion run può essere utilizzato per collegare più specifiche insieme e visualizzarle in una pagina centrale. Questo comando può eseguire tutte le specifiche, visualizzando lo sfondo del collegamento in verde / rosso / grigio a seconda dei casi.

Ora creeremo due specifiche e le collegheremo insieme. Riutilizzeremo le specifiche create nei capitoli Concordion - Execute on List e Concordion - Execute on Table come Specifiche di sistema e Specifiche della calcolatrice.

Esempio

Mettiamo in atto un IDE Eclipse funzionante e seguiamo i passaggi indicati di seguito per creare un'applicazione Concordion -

Passo Descrizione
1 Crea un progetto con un nome concordion e crea un pacchetto com.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Concordion richieste utilizzando l' opzione Add External JARs come spiegato nel capitolo Concordion - First Application .
3 Crea un sistema di classi Java nel pacchetto com.tutorialspoint .
4 Crea le classi Fixture SystemFixture , CalculatorFixture nel pacchetto specs.tutorialspoint .
5 Crea file html di specifica System.html , Calculator.html nel pacchetto specs.tutorialspoint .
6 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file delle specifiche ed eseguire l'applicazione come spiegato di seguito.

Ecco il contenuto del file 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;
   }
}

Di seguito è riportato il contenuto del file 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);
   }  
}

Di seguito è riportato il contenuto del file 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);
   }
}

Di seguito è riportato il contenuto del file 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>

Di seguito è riportato il contenuto del file 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>

Una volta terminata la creazione dei file sorgente e delle specifiche, eseguiamo l'applicazione come JUnit Test. Se tutto va bene con la tua applicazione, produrrà il seguente risultato:

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 è l'output dell'esecuzione di test Concordion.

Fare clic sul collegamento Specifiche di servizio della calcolatrice. Vedrai il seguente output: