Concordion - Volviendo MultiValueResult
El comando de ejecución de Concordion se puede usar para obtener el resultado de un comportamiento en forma de un mapa 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 its 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 Map que tiene firstName y lastName como claves con sus valores correspondientes para que podamos usarlos.
Si queremos escribir una especificación para dicha función dividida que acepte un nombre de usuario y genere un objeto de resultado, entonces la especificación sería la siguiente:
<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 mapa de resultados, imprimirá los valores 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 necesarias mediante la opción Agregar JAR externos como se explica en el capítulo Concordion - Primera aplicación . |
3 | Cree un sistema de clases Java 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 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;
}
}
A continuación se muestra el contenido del archivo 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);
}
}
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: 2, Failures: 0
System.html es el resultado de la ejecución de prueba de Concordion.