SlideShare uma empresa Scribd logo
1 de 12
Baixar para ler offline
Mule ESB com Framework Cucumber – Part 1
O que é Mule ESB?
Mule ESB é um peso leve baseado em Java Enterprise Service Bus (ESB) e
plataforma de integração que permite aos desenvolvedores para conectar
aplicações de forma rápida e facilmente, permitindo-lhes trocar dados.
Mule ESB permite fácil integração de sistemas existentes,
independentemente das diferentes tecnologias que os aplicativos usam,
incluindo JMS, Web Services, JDBC, HTTP, e muito mais.
Este exemplo mostra como podemos integrar estrutura de testes de
Cucumber com Mule ESB para a integração ou a aceitação ou
comportamentais Driven Development (BDD). Nós simplesmente colocar
um arquivo em uma pasta de origem e Mule irá ler o arquivo no diretório
de origem. Usando Mule ESB é muito fácil de ler o arquivo de um local. Se
tivéssemos que ler o arquivo usando codificação manual, em seguida,
tivemos que escrever muitas linhas de código. Mas usando ESB Mule nós
simplesmente colocar um arquivo em um diretório e deixar a mula sabe o
caminho do arquivo e da mula faz o resto da coisa. Você pode colocar
qualquer tipo de arquivo para a fonte para a leitura. O arquivo que
colocamos em um diretório de origem será um anexo para o endereço de
correio do destinatário. Então, finalmente, quando vamos ver o arquivo
como um anexo na caixa de correio.
O que é Cucumber Framework?
Por favor, dê uma olhada no https://cukes.info/
Pré-requisitos
AnyPoint Studio (Mule Studio) 3.5.1
JDK 1.6
Maven 3
Runtime Mule 3.5.1 EE
Conhecimento de XML, Java, Cucumber
Passo 1. Abra Mule Studio e criar um projeto de mula. Vá para Arquivo->
Novo-> Mule Project. Agora digite o nome do projeto, selecione Runtime -
Mule Server, marque a caixa de seleção para uso Maven. Agora insira as
seguintes informações
Grupo Id: sua empresa (. Ex roytuts.com) nome - com.roytuts
Artefato Id: nome do projeto - mulecucumber (preenchido
automaticamente quando o nome do projeto está sendo digitado)
Versão: estúdio Mule gera padrão
Passo 2. Clique em Avançar e verifique projeto Localização e JRE / JDK
estão configuradas corretamente. Clique em Concluir.
Passo 3. Agora arrastar e soltar os elementos do lado direito do estúdio
Mule como mostrado abaixo na imagem.
Cucumber Framework com Mule ESB
propriedades do conector de arquivo
propriedades do conector de arquivo Procurar e selecione o caminho de
onde um arquivo será lido por um anexo. Logger componente propriedades
do componente Logger irá exibir conteúdo no console a partir de cada
fluxo. Arquivo para cordas propriedades transformador arquivar-se forte
transformador apenas transforma o objeto de arquivo para o formato de
cadeia legível. Nós não vai definir qualquer propriedade para este
elemento. Propriedades transformador anexo usando transformador anexo
podemos definir payload de fluxo anterior como um anexo. Temos para
selecionar tipo de conteúdo, operação que Set Anexo, nome, valor.
propriedades do conector SMTP para o conector SMTP temos de host de
entrada de e-mail, nome de usuário, senha, porta em Configurações básicas
e abordar, a partir de endereços, Sujeito em e-mail Informação. O arquivo
XML inteiro de todo o fluxo de
Procurar e selecione o caminho de onde um arquivo será lido por um
anexo.
Arquivo para propriedades de transformadores de corda
Arquivo-se forte transformador apenas transforma o objeto de arquivo para
o formato de cadeia legível. Nós não vai definir qualquer propriedade para
este elemento.
propriedades do componente Logger
componente Logger irá exibir conteúdo no console a partir de cada fluxo.
O arquivo XML inteiro de todo o fluxo
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:file="http://www.mulesoft.org/schema/mule/file"
xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
version="EE-3.5.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/bean
s http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/file
http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/ee/tracking
http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-
ee.xsd">
<flow name="mulecucumberFlow"
doc:name="mulecucumberFlow">
<file:inbound-endpoint
path="D:AnypointStudioWorkspacesourcefile"
responseTimeout="10000" doc:name="File" />
<file:file-to-string-transformer
doc:name="File to String" />
<logger level="INFO" doc:name="Logger"
message="#[payload]" />
</flow>
</mule>
Passo 4. Uma vez que colocar qualquer arquivo com o caminho
selecionado a partir de onde mula irá ler o arquivo, podemos executar o
arquivo mulecucumber.xml e vamos ver a saída do arquivo no console, mas
não é nosso alvo principal. Queremos testar o fluxo usando a estrutura
Cucumber. Então agora vamos criar todas as coisas necessárias para o
Framework de Cucumber.
Vamos colocar o arquivo mulecucumber.xml em src teste / recursos /
diretório / mula. Se src / test / recursos não existe, então, criar-lo de Novo->
pasta de origem.
Passo 5. Vamos criar arquivo de mula-config.xml com baixo conteúdo e
colocá-lo em src / test / diretório app.
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
version="EE-3.5.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/bean
s http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd">
<spring:beans>
<spring:import resource="classpath:mule/mulecucumber.xml"
/>
</spring:beans>
</mule>
Passo 6. Agora vamos criar um arquivo de recurso chamado
CucumberFeature.feature com o conteúdo abaixo dentro dele e colocá-lo
em / / recursos / recurso de teste src.
Feature: File connector reads a file from a particular location and log the
file content in the console
Scenario Outline: Send file content to logger component
Given The scenario with "<SCENARIO_ID>" and scenario
description "<SCENARIO_DESC>"
When The Source system "<SOURCE_SYS>" sends
"<INBOUND_FILE>" to Destination system "<DESTINATION_SYS>"
Then one acknowledge message will come from
"<DESTINATION_SYS>" to "<SOURCE_SYS>"
Examples:
| SCENARIO_ID | SCENARIO_DESC
| SOURCE_SYS | INBOUND_FILE |
DESTINATION_SYS |
| File_Data_to_Logger1 | Send file data to logger component |
File_source | files/data.csv | Logger |
#| File_Data_to_Logger2 | Send file data to logger component |
File source directory | files/data.csv | Logger |
Passo 7. Vamos criar classe de utilitário MuleEmbeddedServer.java e
colocá-lo sob src diretório / test / java no com.roytuts.cucumber.common
pacote com baixo conteúdo.
package com.roytuts.cucumber.common;
import java.io.File;
import java.io.IOException;
import org.mule.api.MuleContext;
import org.mule.api.MuleException;
import org.mule.config.spring.SpringXmlConfigurationBuilder;
import org.mule.context.DefaultMuleContextFactory;
public class MuleEmbeddedServer {
private static MuleContext muleContext;
public static void initialize() throws IOException, MuleException {
final String curPath = new File(".").getCanonicalPath();
muleContext = new DefaultMuleContextFactory()
.createMuleContext(new
SpringXmlConfigurationBuilder(curPath
+ "/src/test/app/mule-config.xml"));
muleContext.start();
}
public static void close() throws MuleException {
muleContext.stop();
}
public static MuleContext getMuleContext() {
return muleContext;
}
}
Passo 8. Agora vamos criar classe de teste que irá testar o fluxo de mula
usando a estrutura Cucumber.
package com.roytuts.cucumber.cuke;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.mule.api.MuleException;
import com.roytuts.cucumber.common.MuleEmbeddedServer;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(features = {
"classpath:features/CucumberFeature.feature" }, glue =
"com.roytuts.cucumber.cuke.steps", strict = true, format = {
"pretty", "html:target/cucumber", "json:target/Cucumber.json"
})
public class CucumberTest {
@BeforeClass()
public static void initTestEnvironment() {
System.out.println("Initialize Test Environment");
try {
MuleEmbeddedServer.initialize();
} catch (Exception e) {
System.out.println("Mule Embedded Server cannot be
iniatilaized.");
e.printStackTrace();
}
System.out.println("Test Environment initialized.");
}
@AfterClass()
public static void destroyTestEnvironment() throws MuleException {
System.out.println("Destroy Test Environment.");
MuleEmbeddedServer.close();
System.out.println("Test Environment destroyed.");
}
}
Nos recursos de classe acima = { "classpath: características /
CucumberFeature.feature"} significa que temos de colocar o arquivo de
recurso em / / recursos / recurso de teste src.
cola = "com.roytuts.cucumber.cuke.steps" significa que teremos um
arquivo de classe passo em src diretório / test / java nos
com.roytuts.cucumber.cuke.steps pacote.
Passo 9. Agora vamos criar em branco arquivo CucumberSteps.java em src
diretório / test / java nos com.roytuts.cucumber.cuke.steps pacote.
Passo 10. Agora vamos executar o CucumberTest.java arquivo de classe e
vamos obter as assinaturas passos no console. Então, vamos copiar esses
passos não implementadas no CucumberSteps.java classe e implementá-los
um por um, como mostrado abaixo.
package com.roytuts.cucumber.cuke.steps;
import java.util.logging.Logger;
import org.mule.MessageExchangePattern;
import org.mule.api.MuleEvent;
import org.mule.api.processor.MessageProcessor;
import org.mule.tck.MuleTestUtils;
import org.mule.util.IOUtils;
import com.roytuts.cucumber.common.MuleEmbeddedServer;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class CucumberSteps {
private static final Logger LOGGER =
Logger.getLogger("CucumberSteps");
@Given("^The scenario with "([^"]*)" and scenario description
"([^"]*)"$")
public void The_scenario_with_and_scenario_description(String
arg1,
String arg2) throws Throwable {
LOGGER.info("Scenario ID : " + arg1);
LOGGER.info("Scenario Description : " + arg2);
}
@When("^The Source system "([^"]*)" sends "([^"]*)" to
Destination system "([^"]*)"$")
public void
The_Source_system_sends_to_Destination_system(String arg1,
String arg2, String arg3) throws Throwable {
LOGGER.info("Source System : " + arg1);
LOGGER.info("File Name : " + arg2);
LOGGER.info("Destination System : " + arg3);
String flowName = "mulecucumberFlow";
Object payload = IOUtils.getResourceAsString(arg2,
this.getClass());
MuleEvent event = MuleTestUtils.getTestEvent(payload,
MessageExchangePattern.REQUEST_RESPONSE,
MuleEmbeddedServer.getMuleContext());
MessageProcessor messageProcessor =
MuleEmbeddedServer.getMuleContext()
.getRegistry().lookupObject(flowName);
event = messageProcessor.process(event);
LOGGER.info("Mule Event Response : " +
event.getMessageAsString());
}
@Then("^one acknowledge message will come from "([^"]*)" to
"([^"]*)"$")
public void one_acknowledge_message_will_come_from_to(String
arg1,
String arg2) throws Throwable {
LOGGER.info("Destination System : " + arg1);
LOGGER.info("Source System : " + arg2);
}
}

Mais conteúdo relacionado

Mais procurados

Trabalhando com anexos soap usando módulo cxf do mule
Trabalhando com anexos soap usando módulo cxf do muleTrabalhando com anexos soap usando módulo cxf do mule
Trabalhando com anexos soap usando módulo cxf do muleJeison Barros
 
Principais perguntas sobre mule esb parte 2
Principais perguntas sobre mule esb parte 2 Principais perguntas sobre mule esb parte 2
Principais perguntas sobre mule esb parte 2 Jeison Barros
 
Como criar um http proxy dinamico com mule parte 1
Como criar um http proxy dinamico com mule   parte 1Como criar um http proxy dinamico com mule   parte 1
Como criar um http proxy dinamico com mule parte 1Jeison Barros
 
Compilação de tutoriais blog MulePE
Compilação de tutoriais blog MulePECompilação de tutoriais blog MulePE
Compilação de tutoriais blog MulePEJeison Barros
 
Usando seu codigo java no mule part 1
Usando seu codigo java no mule part 1Usando seu codigo java no mule part 1
Usando seu codigo java no mule part 1Jeison Barros
 
Mulesoft - Salesforce Analytics Cloud Connector - Part 1
Mulesoft - Salesforce Analytics Cloud Connector - Part 1Mulesoft - Salesforce Analytics Cloud Connector - Part 1
Mulesoft - Salesforce Analytics Cloud Connector - Part 1Jeison Barros
 
Substituindo o request message no mule
Substituindo o request message no muleSubstituindo o request message no mule
Substituindo o request message no muleJeison Barros
 
Integração salesforce com mulesoft usando o salesforce conector
Integração salesforce com mulesoft usando o salesforce conectorIntegração salesforce com mulesoft usando o salesforce conector
Integração salesforce com mulesoft usando o salesforce conectorJeison Barros
 
Suporte a Open Source no Oracle WebLogic 12c - Integração com o Spring Framework
Suporte a Open Source no Oracle WebLogic 12c - Integração com o Spring FrameworkSuporte a Open Source no Oracle WebLogic 12c - Integração com o Spring Framework
Suporte a Open Source no Oracle WebLogic 12c - Integração com o Spring FrameworkRicardo Ferreira
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Tutorial integrado flex_+_java_+_blazeds
Tutorial integrado flex_+_java_+_blazedsTutorial integrado flex_+_java_+_blazeds
Tutorial integrado flex_+_java_+_blazedswagnerlsrodrigues
 
Qual integration framework você deve usar parte 2
Qual integration framework você deve usar parte 2Qual integration framework você deve usar parte 2
Qual integration framework você deve usar parte 2Jeison Barros
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosphelypploch
 
Servidores Web
Servidores Web Servidores Web
Servidores Web bastosluis
 
Exemplo caso de uso(Mulesoft)
Exemplo caso de uso(Mulesoft)Exemplo caso de uso(Mulesoft)
Exemplo caso de uso(Mulesoft)Guilherme Baccas
 
Integrando E-mail ao IBM Connections
Integrando E-mail ao IBM ConnectionsIntegrando E-mail ao IBM Connections
Integrando E-mail ao IBM Connectionsrodrigoareis
 

Mais procurados (20)

Trabalhando com anexos soap usando módulo cxf do mule
Trabalhando com anexos soap usando módulo cxf do muleTrabalhando com anexos soap usando módulo cxf do mule
Trabalhando com anexos soap usando módulo cxf do mule
 
Principais perguntas sobre mule esb parte 2
Principais perguntas sobre mule esb parte 2 Principais perguntas sobre mule esb parte 2
Principais perguntas sobre mule esb parte 2
 
Como criar um http proxy dinamico com mule parte 1
Como criar um http proxy dinamico com mule   parte 1Como criar um http proxy dinamico com mule   parte 1
Como criar um http proxy dinamico com mule parte 1
 
Compilação de tutoriais blog MulePE
Compilação de tutoriais blog MulePECompilação de tutoriais blog MulePE
Compilação de tutoriais blog MulePE
 
Usando seu codigo java no mule part 1
Usando seu codigo java no mule part 1Usando seu codigo java no mule part 1
Usando seu codigo java no mule part 1
 
Mulesoft - Salesforce Analytics Cloud Connector - Part 1
Mulesoft - Salesforce Analytics Cloud Connector - Part 1Mulesoft - Salesforce Analytics Cloud Connector - Part 1
Mulesoft - Salesforce Analytics Cloud Connector - Part 1
 
Substituindo o request message no mule
Substituindo o request message no muleSubstituindo o request message no mule
Substituindo o request message no mule
 
Integração salesforce com mulesoft usando o salesforce conector
Integração salesforce com mulesoft usando o salesforce conectorIntegração salesforce com mulesoft usando o salesforce conector
Integração salesforce com mulesoft usando o salesforce conector
 
Suporte a Open Source no Oracle WebLogic 12c - Integração com o Spring Framework
Suporte a Open Source no Oracle WebLogic 12c - Integração com o Spring FrameworkSuporte a Open Source no Oracle WebLogic 12c - Integração com o Spring Framework
Suporte a Open Source no Oracle WebLogic 12c - Integração com o Spring Framework
 
O Elefante e a Mula
O Elefante e a MulaO Elefante e a Mula
O Elefante e a Mula
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Tutorial integrado flex_+_java_+_blazeds
Tutorial integrado flex_+_java_+_blazedsTutorial integrado flex_+_java_+_blazeds
Tutorial integrado flex_+_java_+_blazeds
 
Tutorial esb (aulas praticas)
Tutorial esb (aulas praticas)Tutorial esb (aulas praticas)
Tutorial esb (aulas praticas)
 
Qual integration framework você deve usar parte 2
Qual integration framework você deve usar parte 2Qual integration framework você deve usar parte 2
Qual integration framework você deve usar parte 2
 
Servidores Web
Servidores WebServidores Web
Servidores Web
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutos
 
Servidores Web
Servidores Web Servidores Web
Servidores Web
 
Exemplo caso de uso(Mulesoft)
Exemplo caso de uso(Mulesoft)Exemplo caso de uso(Mulesoft)
Exemplo caso de uso(Mulesoft)
 
Servidor WEB
Servidor WEBServidor WEB
Servidor WEB
 
Integrando E-mail ao IBM Connections
Integrando E-mail ao IBM ConnectionsIntegrando E-mail ao IBM Connections
Integrando E-mail ao IBM Connections
 

Destaque

Mule Cloud Connectors1-Conectores
Mule Cloud Connectors1-ConectoresMule Cloud Connectors1-Conectores
Mule Cloud Connectors1-ConectoresManuel Antonio
 
Mule esb com framework cucumber part 2
Mule esb com framework cucumber part 2Mule esb com framework cucumber part 2
Mule esb com framework cucumber part 2Jeison Barros
 
Usando seu codigo java no mule part 2
Usando seu codigo java no mule part 2Usando seu codigo java no mule part 2
Usando seu codigo java no mule part 2Jeison Barros
 
Mule Cloud Connectors-Guardando y restaurando el estado o auth
Mule Cloud Connectors-Guardando y restaurando el estado o authMule Cloud Connectors-Guardando y restaurando el estado o auth
Mule Cloud Connectors-Guardando y restaurando el estado o authManuel Antonio
 
Começando com mulesoft e maven
Começando com mulesoft e mavenComeçando com mulesoft e maven
Começando com mulesoft e mavenJeison Barros
 
Mule Cloud Connectors-Instalacion
Mule Cloud Connectors-InstalacionMule Cloud Connectors-Instalacion
Mule Cloud Connectors-InstalacionManuel Antonio
 
Mule Cloud Connectors-Autorizando el conector
Mule Cloud Connectors-Autorizando el conectorMule Cloud Connectors-Autorizando el conector
Mule Cloud Connectors-Autorizando el conectorManuel Antonio
 
Mule cloud connectors1-conectores
Mule cloud connectors1-conectoresMule cloud connectors1-conectores
Mule cloud connectors1-conectoresManuel Antonio
 
Mule cloud connectors versus el resto del mundo
Mule cloud connectors versus el resto del mundoMule cloud connectors versus el resto del mundo
Mule cloud connectors versus el resto del mundoManuel Antonio
 
Mule Cloud Connectors-Configuracion OAuth1
Mule Cloud Connectors-Configuracion OAuth1Mule Cloud Connectors-Configuracion OAuth1
Mule Cloud Connectors-Configuracion OAuth1Manuel Antonio
 
Mule Cloud Connector-Personalizando Callback
Mule Cloud Connector-Personalizando CallbackMule Cloud Connector-Personalizando Callback
Mule Cloud Connector-Personalizando CallbackManuel Antonio
 
Mule Cloud Connectors-Conceptos Basicos
Mule Cloud Connectors-Conceptos BasicosMule Cloud Connectors-Conceptos Basicos
Mule Cloud Connectors-Conceptos BasicosManuel Antonio
 
Mule Cloud Connectors-Configuracion OAuth
Mule Cloud Connectors-Configuracion OAuthMule Cloud Connectors-Configuracion OAuth
Mule Cloud Connectors-Configuracion OAuthManuel Antonio
 
Mule Cloud Connector-Conectividad OAuth
Mule Cloud Connector-Conectividad OAuthMule Cloud Connector-Conectividad OAuth
Mule Cloud Connector-Conectividad OAuthManuel Antonio
 
Webservice with vm in mule
Webservice with vm in muleWebservice with vm in mule
Webservice with vm in muleRajkattamuri
 
Webservice with vm in mule
Webservice with vm in mule Webservice with vm in mule
Webservice with vm in mule javeed_mhd
 
Mule esb api layer
Mule esb api layer Mule esb api layer
Mule esb api layer javeed_mhd
 

Destaque (20)

Mule Cloud Connectors1-Conectores
Mule Cloud Connectors1-ConectoresMule Cloud Connectors1-Conectores
Mule Cloud Connectors1-Conectores
 
Mule esb com framework cucumber part 2
Mule esb com framework cucumber part 2Mule esb com framework cucumber part 2
Mule esb com framework cucumber part 2
 
Usando seu codigo java no mule part 2
Usando seu codigo java no mule part 2Usando seu codigo java no mule part 2
Usando seu codigo java no mule part 2
 
Mule Cloud Connectors-Guardando y restaurando el estado o auth
Mule Cloud Connectors-Guardando y restaurando el estado o authMule Cloud Connectors-Guardando y restaurando el estado o auth
Mule Cloud Connectors-Guardando y restaurando el estado o auth
 
Installing mule
Installing muleInstalling mule
Installing mule
 
Começando com mulesoft e maven
Começando com mulesoft e mavenComeçando com mulesoft e maven
Começando com mulesoft e maven
 
Mule Cloud-Conceptos
Mule Cloud-ConceptosMule Cloud-Conceptos
Mule Cloud-Conceptos
 
Mule Cloud Connectors-Instalacion
Mule Cloud Connectors-InstalacionMule Cloud Connectors-Instalacion
Mule Cloud Connectors-Instalacion
 
Mule Cloud Connectors-Autorizando el conector
Mule Cloud Connectors-Autorizando el conectorMule Cloud Connectors-Autorizando el conector
Mule Cloud Connectors-Autorizando el conector
 
Mule cloud connectors1-conectores
Mule cloud connectors1-conectoresMule cloud connectors1-conectores
Mule cloud connectors1-conectores
 
Mule cloud connectors versus el resto del mundo
Mule cloud connectors versus el resto del mundoMule cloud connectors versus el resto del mundo
Mule cloud connectors versus el resto del mundo
 
Mule Cloud Connectors-Configuracion OAuth1
Mule Cloud Connectors-Configuracion OAuth1Mule Cloud Connectors-Configuracion OAuth1
Mule Cloud Connectors-Configuracion OAuth1
 
Mule Cloud Connector-Personalizando Callback
Mule Cloud Connector-Personalizando CallbackMule Cloud Connector-Personalizando Callback
Mule Cloud Connector-Personalizando Callback
 
Mule Cloud Connectors-Conceptos Basicos
Mule Cloud Connectors-Conceptos BasicosMule Cloud Connectors-Conceptos Basicos
Mule Cloud Connectors-Conceptos Basicos
 
Mule Cloud Connectors-Configuracion OAuth
Mule Cloud Connectors-Configuracion OAuthMule Cloud Connectors-Configuracion OAuth
Mule Cloud Connectors-Configuracion OAuth
 
Mule Cloud Connector-Conectividad OAuth
Mule Cloud Connector-Conectividad OAuthMule Cloud Connector-Conectividad OAuth
Mule Cloud Connector-Conectividad OAuth
 
Webservice with vm in mule
Webservice with vm in muleWebservice with vm in mule
Webservice with vm in mule
 
Webservice with vm in mule
Webservice with vm in mule Webservice with vm in mule
Webservice with vm in mule
 
Mule requesterdemo
Mule requesterdemoMule requesterdemo
Mule requesterdemo
 
Mule esb api layer
Mule esb api layer Mule esb api layer
Mule esb api layer
 

Semelhante a Mule esb com framework cucumber part 1

Spring & Struts
Spring & StrutsSpring & Struts
Spring & Strutseduan
 
Maratona JBoss 2010 - JBoss-ESB
Maratona JBoss 2010 - JBoss-ESBMaratona JBoss 2010 - JBoss-ESB
Maratona JBoss 2010 - JBoss-ESBDextra
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java IIIVerônica Veiga
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endGiovanny Valente
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - BrazilStephen Chin
 
Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Thyago Maia
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Vinicius Pulgatti
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring FrameworkNatanael Fonseca
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosDiego Santos
 

Semelhante a Mule esb com framework cucumber part 1 (20)

Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
Maratona JBoss 2010 - JBoss-ESB
Maratona JBoss 2010 - JBoss-ESBMaratona JBoss 2010 - JBoss-ESB
Maratona JBoss 2010 - JBoss-ESB
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Web Services
Web ServicesWeb Services
Web Services
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
CURSO JAVA 01
CURSO JAVA 01CURSO JAVA 01
CURSO JAVA 01
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-end
 
Aula maven
Aula   mavenAula   maven
Aula maven
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - Brazil
 
Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
 
Alo mundojpa
Alo mundojpaAlo mundojpa
Alo mundojpa
 
Alo mundojpa
Alo mundojpaAlo mundojpa
Alo mundojpa
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 
Apache Struts
Apache StrutsApache Struts
Apache Struts
 

Mais de Jeison Barros

Introdução a RAML - parte 1
Introdução a RAML -  parte 1Introdução a RAML -  parte 1
Introdução a RAML - parte 1Jeison Barros
 
O básico do uso de rest vs soap
O básico do uso de rest vs soapO básico do uso de rest vs soap
O básico do uso de rest vs soapJeison Barros
 
Restful considerada prejudicial - parte 1
Restful considerada prejudicial -  parte 1Restful considerada prejudicial -  parte 1
Restful considerada prejudicial - parte 1Jeison Barros
 
Restful considerada prejudicial parte 2
Restful considerada prejudicial   parte 2Restful considerada prejudicial   parte 2
Restful considerada prejudicial parte 2Jeison Barros
 
Estratégia api e design
Estratégia api e designEstratégia api e design
Estratégia api e designJeison Barros
 
Transformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonTransformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonJeison Barros
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcJeison Barros
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosJeison Barros
 
Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Jeison Barros
 
Consumindo soap wsdl
Consumindo soap wsdlConsumindo soap wsdl
Consumindo soap wsdlJeison Barros
 
Fluxo dinâmicos usando spring aplication
Fluxo dinâmicos usando spring aplicationFluxo dinâmicos usando spring aplication
Fluxo dinâmicos usando spring aplicationJeison Barros
 
Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2Jeison Barros
 
Relatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkRelatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkJeison Barros
 

Mais de Jeison Barros (15)

Pdfteste
PdftestePdfteste
Pdfteste
 
Introdução a RAML - parte 1
Introdução a RAML -  parte 1Introdução a RAML -  parte 1
Introdução a RAML - parte 1
 
O básico do uso de rest vs soap
O básico do uso de rest vs soapO básico do uso de rest vs soap
O básico do uso de rest vs soap
 
Restful considerada prejudicial - parte 1
Restful considerada prejudicial -  parte 1Restful considerada prejudicial -  parte 1
Restful considerada prejudicial - parte 1
 
Restful considerada prejudicial parte 2
Restful considerada prejudicial   parte 2Restful considerada prejudicial   parte 2
Restful considerada prejudicial parte 2
 
Estratégia api e design
Estratégia api e designEstratégia api e design
Estratégia api e design
 
Transformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonTransformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para json
 
Rest api vs SOAP
Rest api vs SOAPRest api vs SOAP
Rest api vs SOAP
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dados
 
Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1
 
Consumindo soap wsdl
Consumindo soap wsdlConsumindo soap wsdl
Consumindo soap wsdl
 
Fluxo dinâmicos usando spring aplication
Fluxo dinâmicos usando spring aplicationFluxo dinâmicos usando spring aplication
Fluxo dinâmicos usando spring aplication
 
Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2
 
Relatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkRelatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunk
 

Mule esb com framework cucumber part 1

  • 1. Mule ESB com Framework Cucumber – Part 1 O que é Mule ESB? Mule ESB é um peso leve baseado em Java Enterprise Service Bus (ESB) e plataforma de integração que permite aos desenvolvedores para conectar aplicações de forma rápida e facilmente, permitindo-lhes trocar dados. Mule ESB permite fácil integração de sistemas existentes, independentemente das diferentes tecnologias que os aplicativos usam, incluindo JMS, Web Services, JDBC, HTTP, e muito mais. Este exemplo mostra como podemos integrar estrutura de testes de Cucumber com Mule ESB para a integração ou a aceitação ou comportamentais Driven Development (BDD). Nós simplesmente colocar um arquivo em uma pasta de origem e Mule irá ler o arquivo no diretório de origem. Usando Mule ESB é muito fácil de ler o arquivo de um local. Se tivéssemos que ler o arquivo usando codificação manual, em seguida, tivemos que escrever muitas linhas de código. Mas usando ESB Mule nós simplesmente colocar um arquivo em um diretório e deixar a mula sabe o caminho do arquivo e da mula faz o resto da coisa. Você pode colocar qualquer tipo de arquivo para a fonte para a leitura. O arquivo que colocamos em um diretório de origem será um anexo para o endereço de correio do destinatário. Então, finalmente, quando vamos ver o arquivo como um anexo na caixa de correio. O que é Cucumber Framework? Por favor, dê uma olhada no https://cukes.info/ Pré-requisitos AnyPoint Studio (Mule Studio) 3.5.1 JDK 1.6
  • 2. Maven 3 Runtime Mule 3.5.1 EE Conhecimento de XML, Java, Cucumber Passo 1. Abra Mule Studio e criar um projeto de mula. Vá para Arquivo-> Novo-> Mule Project. Agora digite o nome do projeto, selecione Runtime - Mule Server, marque a caixa de seleção para uso Maven. Agora insira as seguintes informações Grupo Id: sua empresa (. Ex roytuts.com) nome - com.roytuts Artefato Id: nome do projeto - mulecucumber (preenchido automaticamente quando o nome do projeto está sendo digitado) Versão: estúdio Mule gera padrão Passo 2. Clique em Avançar e verifique projeto Localização e JRE / JDK estão configuradas corretamente. Clique em Concluir. Passo 3. Agora arrastar e soltar os elementos do lado direito do estúdio Mule como mostrado abaixo na imagem.
  • 3. Cucumber Framework com Mule ESB propriedades do conector de arquivo propriedades do conector de arquivo Procurar e selecione o caminho de onde um arquivo será lido por um anexo. Logger componente propriedades do componente Logger irá exibir conteúdo no console a partir de cada fluxo. Arquivo para cordas propriedades transformador arquivar-se forte transformador apenas transforma o objeto de arquivo para o formato de cadeia legível. Nós não vai definir qualquer propriedade para este elemento. Propriedades transformador anexo usando transformador anexo podemos definir payload de fluxo anterior como um anexo. Temos para selecionar tipo de conteúdo, operação que Set Anexo, nome, valor. propriedades do conector SMTP para o conector SMTP temos de host de entrada de e-mail, nome de usuário, senha, porta em Configurações básicas e abordar, a partir de endereços, Sujeito em e-mail Informação. O arquivo XML inteiro de todo o fluxo de Procurar e selecione o caminho de onde um arquivo será lido por um anexo. Arquivo para propriedades de transformadores de corda Arquivo-se forte transformador apenas transforma o objeto de arquivo para o formato de cadeia legível. Nós não vai definir qualquer propriedade para este elemento. propriedades do componente Logger componente Logger irá exibir conteúdo no console a partir de cada fluxo. O arquivo XML inteiro de todo o fluxo
  • 4. <?xml version="1.0" encoding="UTF-8"?> <mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.5.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/bean s http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking- ee.xsd"> <flow name="mulecucumberFlow" doc:name="mulecucumberFlow"> <file:inbound-endpoint path="D:AnypointStudioWorkspacesourcefile" responseTimeout="10000" doc:name="File" /> <file:file-to-string-transformer doc:name="File to String" /> <logger level="INFO" doc:name="Logger" message="#[payload]" /> </flow> </mule>
  • 5. Passo 4. Uma vez que colocar qualquer arquivo com o caminho selecionado a partir de onde mula irá ler o arquivo, podemos executar o arquivo mulecucumber.xml e vamos ver a saída do arquivo no console, mas não é nosso alvo principal. Queremos testar o fluxo usando a estrutura Cucumber. Então agora vamos criar todas as coisas necessárias para o Framework de Cucumber. Vamos colocar o arquivo mulecucumber.xml em src teste / recursos / diretório / mula. Se src / test / recursos não existe, então, criar-lo de Novo-> pasta de origem. Passo 5. Vamos criar arquivo de mula-config.xml com baixo conteúdo e colocá-lo em src / test / diretório app. <?xml version="1.0" encoding="UTF-8"?> <mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.5.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/bean s http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd"> <spring:beans> <spring:import resource="classpath:mule/mulecucumber.xml" /> </spring:beans> </mule>
  • 6. Passo 6. Agora vamos criar um arquivo de recurso chamado CucumberFeature.feature com o conteúdo abaixo dentro dele e colocá-lo em / / recursos / recurso de teste src. Feature: File connector reads a file from a particular location and log the file content in the console Scenario Outline: Send file content to logger component Given The scenario with "<SCENARIO_ID>" and scenario description "<SCENARIO_DESC>" When The Source system "<SOURCE_SYS>" sends "<INBOUND_FILE>" to Destination system "<DESTINATION_SYS>" Then one acknowledge message will come from "<DESTINATION_SYS>" to "<SOURCE_SYS>" Examples: | SCENARIO_ID | SCENARIO_DESC | SOURCE_SYS | INBOUND_FILE | DESTINATION_SYS | | File_Data_to_Logger1 | Send file data to logger component | File_source | files/data.csv | Logger | #| File_Data_to_Logger2 | Send file data to logger component | File source directory | files/data.csv | Logger | Passo 7. Vamos criar classe de utilitário MuleEmbeddedServer.java e colocá-lo sob src diretório / test / java no com.roytuts.cucumber.common pacote com baixo conteúdo. package com.roytuts.cucumber.common;
  • 7. import java.io.File; import java.io.IOException; import org.mule.api.MuleContext; import org.mule.api.MuleException; import org.mule.config.spring.SpringXmlConfigurationBuilder; import org.mule.context.DefaultMuleContextFactory; public class MuleEmbeddedServer { private static MuleContext muleContext; public static void initialize() throws IOException, MuleException { final String curPath = new File(".").getCanonicalPath(); muleContext = new DefaultMuleContextFactory() .createMuleContext(new SpringXmlConfigurationBuilder(curPath + "/src/test/app/mule-config.xml")); muleContext.start(); } public static void close() throws MuleException { muleContext.stop(); } public static MuleContext getMuleContext() { return muleContext; }
  • 8. } Passo 8. Agora vamos criar classe de teste que irá testar o fluxo de mula usando a estrutura Cucumber. package com.roytuts.cucumber.cuke; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.runner.RunWith; import org.mule.api.MuleException; import com.roytuts.cucumber.common.MuleEmbeddedServer; import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options(features = { "classpath:features/CucumberFeature.feature" }, glue = "com.roytuts.cucumber.cuke.steps", strict = true, format = { "pretty", "html:target/cucumber", "json:target/Cucumber.json" }) public class CucumberTest { @BeforeClass() public static void initTestEnvironment() { System.out.println("Initialize Test Environment"); try {
  • 9. MuleEmbeddedServer.initialize(); } catch (Exception e) { System.out.println("Mule Embedded Server cannot be iniatilaized."); e.printStackTrace(); } System.out.println("Test Environment initialized."); } @AfterClass() public static void destroyTestEnvironment() throws MuleException { System.out.println("Destroy Test Environment."); MuleEmbeddedServer.close(); System.out.println("Test Environment destroyed."); } } Nos recursos de classe acima = { "classpath: características / CucumberFeature.feature"} significa que temos de colocar o arquivo de recurso em / / recursos / recurso de teste src. cola = "com.roytuts.cucumber.cuke.steps" significa que teremos um arquivo de classe passo em src diretório / test / java nos com.roytuts.cucumber.cuke.steps pacote. Passo 9. Agora vamos criar em branco arquivo CucumberSteps.java em src diretório / test / java nos com.roytuts.cucumber.cuke.steps pacote. Passo 10. Agora vamos executar o CucumberTest.java arquivo de classe e vamos obter as assinaturas passos no console. Então, vamos copiar esses
  • 10. passos não implementadas no CucumberSteps.java classe e implementá-los um por um, como mostrado abaixo. package com.roytuts.cucumber.cuke.steps; import java.util.logging.Logger; import org.mule.MessageExchangePattern; import org.mule.api.MuleEvent; import org.mule.api.processor.MessageProcessor; import org.mule.tck.MuleTestUtils; import org.mule.util.IOUtils; import com.roytuts.cucumber.common.MuleEmbeddedServer; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; public class CucumberSteps { private static final Logger LOGGER = Logger.getLogger("CucumberSteps"); @Given("^The scenario with "([^"]*)" and scenario description "([^"]*)"$") public void The_scenario_with_and_scenario_description(String arg1, String arg2) throws Throwable {
  • 11. LOGGER.info("Scenario ID : " + arg1); LOGGER.info("Scenario Description : " + arg2); } @When("^The Source system "([^"]*)" sends "([^"]*)" to Destination system "([^"]*)"$") public void The_Source_system_sends_to_Destination_system(String arg1, String arg2, String arg3) throws Throwable { LOGGER.info("Source System : " + arg1); LOGGER.info("File Name : " + arg2); LOGGER.info("Destination System : " + arg3); String flowName = "mulecucumberFlow"; Object payload = IOUtils.getResourceAsString(arg2, this.getClass()); MuleEvent event = MuleTestUtils.getTestEvent(payload, MessageExchangePattern.REQUEST_RESPONSE, MuleEmbeddedServer.getMuleContext()); MessageProcessor messageProcessor = MuleEmbeddedServer.getMuleContext() .getRegistry().lookupObject(flowName); event = messageProcessor.process(event); LOGGER.info("Mule Event Response : " + event.getMessageAsString()); } @Then("^one acknowledge message will come from "([^"]*)" to "([^"]*)"$")
  • 12. public void one_acknowledge_message_will_come_from_to(String arg1, String arg2) throws Throwable { LOGGER.info("Destination System : " + arg1); LOGGER.info("Source System : " + arg2); } }