Concordion - Retornando MultiValueResult

O comando Concordion execute pode ser usado para obter o resultado de um comportamento na forma de um mapa, usando o qual podemos obter várias saídas de um comportamento. Por exemplo, considere o seguinte requisito -

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

Aqui, precisamos ter uma função de divisão que aceita um nome de usuário e retorna um objeto Map tendo firstName e lastName como suas chaves com seus valores correspondentes para que possamos usá-los.

Se quisermos escrever uma especificação para essa função de divisão que aceitará um nome de usuário e produzirá um objeto de resultado, a especificação seria a seguinte -

<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 o Concordion analisa o documento, ele definirá o valor da variável especial #TEXT como o valor do elemento atual como "Robert De" e o passará para a função de divisão. Em seguida, ele executará o método split () com parâmetros como #TEXT usando o comando execute e definirá o resultado na variável #result e, usando o mapa de resultados, imprimirá os valores firstName e lastName como saída.

Exemplo

Vamos ter um Eclipse IDE funcionando e seguir as etapas abaixo para criar um aplicativo Concordion -

Degrau Descrição
1 Crie um projeto com o nome concordion e crie um pacote com.tutorialspoint sob osrc pasta no projeto criado.
2 Adicione as bibliotecas do Concordion necessárias usando a opção Adicionar JARs externos conforme explicado no capítulo Concordion - Primeiro Aplicativo .
3 Crie a classe Java System sob o pacote com.tutorialspoint .
4 Crie a classe Fixture SystemFixture sob o pacote specs.tutorialspoint .
5 Crie Specification html System.html sob o pacote specs.tutorialspoint .
6 A etapa final é criar o conteúdo de todos os arquivos Java e o arquivo de especificação e executar o aplicativo conforme explicado abaixo.

Aqui está o conteúdo do arquivo 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 seguir está o conteúdo do arquivo 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 seguir está o conteúdo do arquivo 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>

Quando terminar de criar os arquivos de origem e de especificação, vamos executar o aplicativo como Teste JUnit. Se tudo estiver bem com o seu aplicativo, ele produzirá o seguinte resultado -

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

System.html é o resultado da execução do teste Concordion.