Concordion - Objeto que regresa

El comando de ejecución de Concordion se puede usar para obtener el resultado de un comportamiento en forma de objeto mediante el cual podemos obtener múltiples salidas de un comportamiento. Por ejemplo, considere el siguiente requisito:

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

Aquí necesitamos tener una función de división que acepte un nombre de usuario y devuelva un objeto de resultado con el nombre y el apellido como propiedades para que podamos usarlos.

Si queremos escribir una especificación para dicha función dividida que esperará un nombre de usuario y generará un objeto de resultado, entonces la siguiente será la especificación:

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

Cuando Concordion analiza el documento, establecerá el valor de la variable especial #TEXT como el valor del elemento actual como "Robert De" y lo pasará a la función de división. Luego ejecutará el método split () con parámetros como #TEXT usando el comando de ejecución y establecerá el resultado en la variable #result y usando el objeto de resultado, imprimirá las propiedades firstName y lastName como salida.

Ejemplo

Tengamos un IDE de Eclipse en funcionamiento y sigamos los pasos que se indican a continuación para crear una aplicación Concordion:

Paso Descripción
1 Cree un proyecto con el nombre concordion y cree un paquete com.tutorialspoint bajo elsrc carpeta en el proyecto creado.
2 Agregue las bibliotecas de Concordion requeridas usando la opción Agregar JAR externos como se explica en el capítulo Concordion - Primera aplicación .
3 Cree el sistema de clase Java , resultado en el paquete com.tutorialspoint .
4 Crear Fixture clase SystemFixture bajo la specs.tutorialspoint paquete.
5 Cree Specification html System.html en el paquete specs.tutorialspoint .
6 El paso final es crear el contenido de todos los archivos Java y el archivo de especificación y ejecutar la aplicación como se explica a continuación.

Aquí está el contenido del archivo 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;
   } 
}

Aquí está el contenido del archivo 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;
   }
}

A continuación se muestra el contenido del archivo 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);
   }  
}

A continuación se muestra el contenido del archivo 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 vez que haya terminado de crear los archivos fuente y de especificación, ejecutemos la aplicación como JUnit Test. Si todo está bien con su aplicación, producirá el siguiente resultado:

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

System.html es el resultado de la ejecución de prueba de Concordion.