Concordion - Execute on List

Il comando Concordion execute può essere usato 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, 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 Aggiungi JAR esterni come spiegato nel capitolo Concordione - Prima applicazione .
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, allora 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.