SlideShare uma empresa Scribd logo
1 de 21
24/06/2021
São Paulo MuleSoft Meetup Group
MUnit: Encontre os bugs antes que eles encontrem
seu app
2
●Daniel Mirilli
○ + 20 anos de desenvolvimento de software
○ Desenvolve projetos de integração desde 2005
○ Desde 2013 profissionalmente utilizando a plataforma MuleSoft
Sobre o apresentador
3
● Conceitos de Unit Testing
● Submódulos do MUnit
● Como criar um MUnit
● Outros tópicos sobre MUnit
Agenda
E porque você deveria se importar?
O que é Unit Testing?
5
● Definição
○ Testes automatizados, geralmente compatível com CI/CD
○ Garantem a execução de um "contrato"
○ Usam method stubs, mock objects, fakes e test harnesses
● Vantagens
○ Identificar erros antecipadamente
○ Possibilitar o TDD
○ Facilitar a refatoração
● Limitações e Desvantagens
O que é Unit Testing?
6
Para mim, código legado é simplesmente
código sem testes.
Working Effectively With Legacy Code, Michael Feathers
subtitle
Submódulos do MUnit
8
Sub-Módulos do MUnit
9
Servidor MUnit Database e FTP
●Testar funcionalidades que dependam de
um servidor de banco de dados ou FTP.
●Implementa servidores in-memory /
embarcados na sua máquina local ou
durante o CI/CD
●Permite a execução rápida de testes
10
Servidor MUnit Database
●Permite a definição de uma estrutura de
tabelas
○ CSV
○ SQL (CREATE TABLE)
■ Suporta PK, FK, CONSTRAINTS…
●Componentes:
○ Execute: executa uma instrução SQL
○ Execute query: executa uma query SQL
que retorna dados
○ Validate that: valida o resultado de uma
query SQL
11
Servidor MUnit FTP
●Componentes:
○ Contains file: verifica a existência de um
arquivo no servidor
○ Remove: remove um arquivo no servidor
● Configuração:
De forma manual
Como criar um MUnit
13
Estrutura de uma Suite de Testes
14
Propriedades do Test
Componentes do MUnit
●Declara um Evento Mule (entrada de dados)
●Pode criar:
○ Payload
○ Atributos
○ Erros
○ Variáveis
●Atua como mock de um componente de
evento
●Dica: criar usando referência para doc:id
● Pode retornar:
○ Payload
○ Atributos
○ Erros
○ Variáveis
Componentes do MUnit
●Assert equals: valores estáticos (ex: #[20], "Hello World!")
●Assert that: usa Matchers (ex: #[MunitTools::nullValue()],
#[MunitTools::containsString('example')], #[MunitTools::greaterThan(20)])
●Assert Expression: usa dw::test::Asserts (ex: vars.attributes must [beObject(), $.statusCode
must equalTo(200), $.method must equalTo('GET')]
●Run custom: assertiva que usa classe Java que implementa MunitAssertion
Componentes do MUnit
●Spy: verifica o que acontece antes e depois do componente (before call e after call)
●Verify call: verifica se um componente foi chamado. Permite as configurações times,
atLeast e atMost
●Fail: força a falha de um teste com uma mensagem de erro
Outros tópicos sobre MUnit
Outros tópicos sobre MUnit
●Parameterized
○ Mesma test suite com valores diferentes
●Test Recorder
○ Grava o fluxo processado e permite a configuração de testes unitários
Demo
Obrigado!

Mais conteúdo relacionado

Mais procurados

Palestra de Asp.Net 5 no TDC floripa e DotnetFloripa
Palestra de Asp.Net 5 no TDC floripa e DotnetFloripaPalestra de Asp.Net 5 no TDC floripa e DotnetFloripa
Palestra de Asp.Net 5 no TDC floripa e DotnetFloripaRenato Haddad
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Renato Groff
 
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...Renato Groff
 
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Renato Groff
 
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Renato Groff
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...Emmanuel Neri
 
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018Renato Groff
 
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Renato Groffe
 
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...Renato Groff
 
Criando uma arquitetura escalável para processamento de arquivos com micro s...
Criando uma arquitetura escalável para processamento de arquivos com micro s...Criando uma arquitetura escalável para processamento de arquivos com micro s...
Criando uma arquitetura escalável para processamento de arquivos com micro s...Emmanuel Neri
 
O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017Renato Groff
 
.NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE...
.NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE....NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE...
.NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE...Renato Groff
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Renato Groff
 
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - .....NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....Renato Groff
 
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019Renato Groff
 
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Renato Groff
 
[Natal Nerd] IT Talks - NET Core
[Natal Nerd] IT Talks - NET Core[Natal Nerd] IT Talks - NET Core
[Natal Nerd] IT Talks - NET CoreJaqueline Ramos
 
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure BrasilImplementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure BrasilRenato Groff
 

Mais procurados (20)

Palestra de Asp.Net 5 no TDC floripa e DotnetFloripa
Palestra de Asp.Net 5 no TDC floripa e DotnetFloripaPalestra de Asp.Net 5 no TDC floripa e DotnetFloripa
Palestra de Asp.Net 5 no TDC floripa e DotnetFloripa
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
 
Do Monolítico aos Micro Serviços no Azure
Do Monolítico aos Micro Serviços no AzureDo Monolítico aos Micro Serviços no Azure
Do Monolítico aos Micro Serviços no Azure
 
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
 
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
 
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
 
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
 
Webpack
Webpack Webpack
Webpack
 
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
 
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...
 
Criando uma arquitetura escalável para processamento de arquivos com micro s...
Criando uma arquitetura escalável para processamento de arquivos com micro s...Criando uma arquitetura escalável para processamento de arquivos com micro s...
Criando uma arquitetura escalável para processamento de arquivos com micro s...
 
O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017
 
.NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE...
.NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE....NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE...
.NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE...
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
 
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - .....NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
 
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
 
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
 
[Natal Nerd] IT Talks - NET Core
[Natal Nerd] IT Talks - NET Core[Natal Nerd] IT Talks - NET Core
[Natal Nerd] IT Talks - NET Core
 
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure BrasilImplementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
 

Semelhante a MUnit: Encontre os bugs antes que eles encontrem seu app

Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Wellington Moreira
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoiMasters
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaGabriela Patuci
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyFausto Siqueira
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
Curso Intensivo de N8N
Curso Intensivo de N8NCurso Intensivo de N8N
Curso Intensivo de N8NAutotic
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
Cobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeCobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeThiago Bertuzzi
 
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeAndré Abe Vicente
 
Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2William Felipe
 
Testes de Unidade - Unidade II
Testes de Unidade - Unidade IITestes de Unidade - Unidade II
Testes de Unidade - Unidade IIJoão Lourenço
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
Ciclo de vida de testes implementado v2
Ciclo de vida de testes implementado   v2Ciclo de vida de testes implementado   v2
Ciclo de vida de testes implementado v2douglasdc7m
 
Brateste 2013: Testes Agile em Processos Agile
Brateste 2013:  Testes Agile em Processos AgileBrateste 2013:  Testes Agile em Processos Agile
Brateste 2013: Testes Agile em Processos Agileananegrello
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Developmentpugpe
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentRodrigo Alves Vieira
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Renato Groff
 

Semelhante a MUnit: Encontre os bugs antes que eles encontrem seu app (20)

Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimento
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic Academy
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Curso Intensivo de N8N
Curso Intensivo de N8NCurso Intensivo de N8N
Curso Intensivo de N8N
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Cobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeCobertura de Código: Testes de Unidade
Cobertura de Código: Testes de Unidade
 
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
 
Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
Testes de Unidade - Unidade II
Testes de Unidade - Unidade IITestes de Unidade - Unidade II
Testes de Unidade - Unidade II
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Ciclo de vida de testes implementado v2
Ciclo de vida de testes implementado   v2Ciclo de vida de testes implementado   v2
Ciclo de vida de testes implementado v2
 
Brateste 2013: Testes Agile em Processos Agile
Brateste 2013:  Testes Agile em Processos AgileBrateste 2013:  Testes Agile em Processos Agile
Brateste 2013: Testes Agile em Processos Agile
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016
 

MUnit: Encontre os bugs antes que eles encontrem seu app

  • 1. 24/06/2021 São Paulo MuleSoft Meetup Group MUnit: Encontre os bugs antes que eles encontrem seu app
  • 2. 2 ●Daniel Mirilli ○ + 20 anos de desenvolvimento de software ○ Desenvolve projetos de integração desde 2005 ○ Desde 2013 profissionalmente utilizando a plataforma MuleSoft Sobre o apresentador
  • 3. 3 ● Conceitos de Unit Testing ● Submódulos do MUnit ● Como criar um MUnit ● Outros tópicos sobre MUnit Agenda
  • 4. E porque você deveria se importar? O que é Unit Testing?
  • 5. 5 ● Definição ○ Testes automatizados, geralmente compatível com CI/CD ○ Garantem a execução de um "contrato" ○ Usam method stubs, mock objects, fakes e test harnesses ● Vantagens ○ Identificar erros antecipadamente ○ Possibilitar o TDD ○ Facilitar a refatoração ● Limitações e Desvantagens O que é Unit Testing?
  • 6. 6 Para mim, código legado é simplesmente código sem testes. Working Effectively With Legacy Code, Michael Feathers
  • 9. 9 Servidor MUnit Database e FTP ●Testar funcionalidades que dependam de um servidor de banco de dados ou FTP. ●Implementa servidores in-memory / embarcados na sua máquina local ou durante o CI/CD ●Permite a execução rápida de testes
  • 10. 10 Servidor MUnit Database ●Permite a definição de uma estrutura de tabelas ○ CSV ○ SQL (CREATE TABLE) ■ Suporta PK, FK, CONSTRAINTS… ●Componentes: ○ Execute: executa uma instrução SQL ○ Execute query: executa uma query SQL que retorna dados ○ Validate that: valida o resultado de uma query SQL
  • 11. 11 Servidor MUnit FTP ●Componentes: ○ Contains file: verifica a existência de um arquivo no servidor ○ Remove: remove um arquivo no servidor ● Configuração:
  • 12. De forma manual Como criar um MUnit
  • 13. 13 Estrutura de uma Suite de Testes
  • 15. Componentes do MUnit ●Declara um Evento Mule (entrada de dados) ●Pode criar: ○ Payload ○ Atributos ○ Erros ○ Variáveis ●Atua como mock de um componente de evento ●Dica: criar usando referência para doc:id ● Pode retornar: ○ Payload ○ Atributos ○ Erros ○ Variáveis
  • 16. Componentes do MUnit ●Assert equals: valores estáticos (ex: #[20], "Hello World!") ●Assert that: usa Matchers (ex: #[MunitTools::nullValue()], #[MunitTools::containsString('example')], #[MunitTools::greaterThan(20)]) ●Assert Expression: usa dw::test::Asserts (ex: vars.attributes must [beObject(), $.statusCode must equalTo(200), $.method must equalTo('GET')] ●Run custom: assertiva que usa classe Java que implementa MunitAssertion
  • 17. Componentes do MUnit ●Spy: verifica o que acontece antes e depois do componente (before call e after call) ●Verify call: verifica se um componente foi chamado. Permite as configurações times, atLeast e atMost ●Fail: força a falha de um teste com uma mensagem de erro
  • 19. Outros tópicos sobre MUnit ●Parameterized ○ Mesma test suite com valores diferentes ●Test Recorder ○ Grava o fluxo processado e permite a configuração de testes unitários
  • 20. Demo