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