SlideShare uma empresa Scribd logo
1 de 22
Testes unitários 
Gilles Rodrigues 
Ricardo Gonçalves 
Setembro 2014 | BeiraJUG
Agenda 
•O que são? 
•Objectivos 
•Checklist 
•Vantagens/Desvantagens 
•Ferramentas 
–Junit 
–Mocks 
•Coding Dojo 
•Questões/Feedback
O que são? 
É uma forma de realização de testes de software, que 
permite verificar e validar e correto funcionamento de 
uma unidade de código desenvolvido
Vantagens 
•Validar se o código desenvolvido implementa o 
comportamento esperado 
•Mudança de código com confiança 
•Evitar regressões 
•Uma forma de documentação 
•Menos BUGS 
Desvantagens 
•Tempo adicional de desenvolvimento 
•Tentação de alterações ao código não pretendidas mas 
apenas para o tornar testável
Checklist 
•Validar resultados 
•Boundary Conditions (Ex: Formato de data errada, valores em falta 
ou fora do intervalo, duplicados….) 
•Verificar a relação inversa (Ex: raizQuadrada(a)² = a) 
•Verificação cruzada (Ex: raizQuadrada(a) = Math. sqrt(a)) 
•Forçar condições de erro e verificar retorno 
•Performance
Ferramentas
JUnit 
•Definição 
•Anotações 
•Asserções 
•Suites 
•Cobertura
Definição 
•Framework simples open-source para escrita de testes 
unitários automatizados para Java 
•TDD aplicável, isto é, desenvolvimento conduzido pelos testes 
•Integração com ferramentas de build (ex: Ant, Maven) 
•Baseado essencialmente em anotações
Anotações 
•@Test – método de teste 
O atributo “timeout” permite estabelecer o tempo máximo em 
que o teste deve ser executado 
O atributo “expected” permite validar o levantamento de 
determinada excepção 
•@Ignore – método de teste ignorado 
•@BeforeClass – método executado antes dos demais 
métodos da classe de teste 
•@AfterClass – método executado após os demais métodos da 
classe de teste 
•@Before – método executado antes de cada caso de teste 
•@After – método executado após cada caso de teste
Anotações
Asserções
Exemplo
Suites 
•Possibilidade de criar conjuntos de testes:
Cobertura 
•Utilizando bibliotecas auxiliares, é possível verificar se os 
nossos testes unitários cobrem todos os fluxos de execução do 
código
Mockito 
•Mocks 
•Definição 
•Modo de utilização
Mocks 
•Nem sempre é fácil criar testes unitários porque 
frequentemente existem dependências que não podemos ou 
devemos testar unitariamente 
•Mock objects são objetos que simulam o comportamento de 
outros objetos de forma controlada. 
•O desenvovlimento em camadas, recorrendo ao uso de 
interfaces é fundamental para a utilização de mocks 
•Um exemplo típico será a existência de um mock simulando a 
camada de acesso a dados (BDD), permitindo testes unitários 
isolados
Definição 
•Existem frameworks que permitem a manipulação/integração 
de mocks com JUnit, como por exemplo mockito 
•Facilita a criação de objetos mock de forma a que os testes 
fiquem simples e legíveis 
Essencialmente: 
•O retorno de determinada chamada pode ser redefinido de 
teste para teste 
•A verificação de chamadas, isto é, o número de vezes que um 
método é invocado, bem como quais os parametros de 
entrada esperados, é algo programável de forma intuitiva
Modo de utilização 
1) Inicialização do mock 
2) Descrição do comportamento esperado 
3) Invocação do método que se pretende testar 
4) Verificação/Confirmação da invocação ao método, bem como dos 
parâmetros de entrada
Exemplo
Coding dojo – Calculator 
Implements unit testing
Testes unitários: validação automática de código

Mais conteúdo relacionado

Mais procurados

.NET Core e Testes de Unidade - Visual Studio Summit 2017
.NET Core e Testes de Unidade - Visual Studio Summit 2017.NET Core e Testes de Unidade - Visual Studio Summit 2017
.NET Core e Testes de Unidade - Visual Studio Summit 2017Renato Groff
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Renato Groff
 
Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Renato Groff
 
Testes de Unidade - Unidade II
Testes de Unidade - Unidade IITestes de Unidade - Unidade II
Testes de Unidade - Unidade IIJoão Lourenço
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...Renato Groff
 
Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmineRangel Javier
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Renato Groff
 
Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016Renato Groff
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDDPHP Day Curitiba
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018Renato Groff
 
Testes: Existe vida antes do TDD, por Diana Arnos
Testes: Existe vida antes do TDD, por Diana ArnosTestes: Existe vida antes do TDD, por Diana Arnos
Testes: Existe vida antes do TDD, por Diana ArnosiMasters
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot frameworkClaudenir Freitas
 
Apresentação lições aprendidas
Apresentação lições aprendidasApresentação lições aprendidas
Apresentação lições aprendidasricardojp
 
Apresentação lições aprendidas
Apresentação lições aprendidasApresentação lições aprendidas
Apresentação lições aprendidasricardojp
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetosFrancisco Santos
 
Testes de interfaces Web com Selenium
Testes de interfaces Web com SeleniumTestes de interfaces Web com Selenium
Testes de interfaces Web com SeleniumRenato Groff
 

Mais procurados (19)

.NET Core e Testes de Unidade - Visual Studio Summit 2017
.NET Core e Testes de Unidade - Visual Studio Summit 2017.NET Core e Testes de Unidade - Visual Studio Summit 2017
.NET Core e Testes de Unidade - Visual Studio Summit 2017
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016
 
Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017
 
Testes de Unidade - Unidade II
Testes de Unidade - Unidade IITestes de Unidade - Unidade II
Testes de Unidade - Unidade II
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
 
Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmine
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
 
Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016
 
Bdd com spec flow
Bdd com spec flowBdd com spec flow
Bdd com spec flow
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDD
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
 
Testes: Existe vida antes do TDD, por Diana Arnos
Testes: Existe vida antes do TDD, por Diana ArnosTestes: Existe vida antes do TDD, por Diana Arnos
Testes: Existe vida antes do TDD, por Diana Arnos
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot framework
 
Apresentação lições aprendidas
Apresentação lições aprendidasApresentação lições aprendidas
Apresentação lições aprendidas
 
Apresentação lições aprendidas
Apresentação lições aprendidasApresentação lições aprendidas
Apresentação lições aprendidas
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
Refatoração de Código Legado
Refatoração de Código LegadoRefatoração de Código Legado
Refatoração de Código Legado
 
Testes de interfaces Web com Selenium
Testes de interfaces Web com SeleniumTestes de interfaces Web com Selenium
Testes de interfaces Web com Selenium
 
TDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - FloripaTDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - Floripa
 

Destaque

Personalidade na organização
Personalidade na organizaçãoPersonalidade na organização
Personalidade na organizaçãoLiliane Ennes
 
M.s. mod. e prática de form. de profs. - avaliação - aula 3
M.s.   mod. e prática de form. de profs. - avaliação - aula 3M.s.   mod. e prática de form. de profs. - avaliação - aula 3
M.s. mod. e prática de form. de profs. - avaliação - aula 3lislieribeiro
 
Trabalho arte da guerra
Trabalho   arte da guerraTrabalho   arte da guerra
Trabalho arte da guerraJazon Pereira
 
A arte da guerra slide
A arte da guerra slideA arte da guerra slide
A arte da guerra slideTatiane Souza
 
Psicologia do desenvolvimento e da aprendizagem
Psicologia do desenvolvimento e da aprendizagemPsicologia do desenvolvimento e da aprendizagem
Psicologia do desenvolvimento e da aprendizagemDébora Silveira
 
Aula 3 - Personalidade e Processos Psicológicos Básicos
Aula 3 -  Personalidade e Processos Psicológicos BásicosAula 3 -  Personalidade e Processos Psicológicos Básicos
Aula 3 - Personalidade e Processos Psicológicos BásicosFelipe Saraiva Nunes de Pinho
 
A Gestão de Pessoas presente no livro A Arte da Guerra
A Gestão de Pessoas presente no livro A Arte da GuerraA Gestão de Pessoas presente no livro A Arte da Guerra
A Gestão de Pessoas presente no livro A Arte da GuerraLucas Sperandei
 
Apostila de recrutamento e selecao
Apostila de recrutamento e selecaoApostila de recrutamento e selecao
Apostila de recrutamento e selecaoAndy Willians
 
Técnicas de Recrutamento
Técnicas de RecrutamentoTécnicas de Recrutamento
Técnicas de RecrutamentoCarlo Pires
 
Psicologia Do Desenvolvimento
Psicologia Do DesenvolvimentoPsicologia Do Desenvolvimento
Psicologia Do DesenvolvimentoAclecio Dantas
 
Psicologia do desenvolvimento e da aprendizagem
Psicologia do desenvolvimento e da aprendizagemPsicologia do desenvolvimento e da aprendizagem
Psicologia do desenvolvimento e da aprendizagemDébora Silveira
 
Psicologia da Educação
Psicologia da Educação Psicologia da Educação
Psicologia da Educação Carlos Caldas
 
Recrutamento e seleção de pessoas
Recrutamento e seleção de pessoasRecrutamento e seleção de pessoas
Recrutamento e seleção de pessoasÉrica Rangel
 

Destaque (20)

Personalidade na organização
Personalidade na organizaçãoPersonalidade na organização
Personalidade na organização
 
M.s. mod. e prática de form. de profs. - avaliação - aula 3
M.s.   mod. e prática de form. de profs. - avaliação - aula 3M.s.   mod. e prática de form. de profs. - avaliação - aula 3
M.s. mod. e prática de form. de profs. - avaliação - aula 3
 
Trabalho arte da guerra
Trabalho   arte da guerraTrabalho   arte da guerra
Trabalho arte da guerra
 
A arte da guerra slide
A arte da guerra slideA arte da guerra slide
A arte da guerra slide
 
Psicologia do desenvolvimento e da aprendizagem
Psicologia do desenvolvimento e da aprendizagemPsicologia do desenvolvimento e da aprendizagem
Psicologia do desenvolvimento e da aprendizagem
 
O que é Personalidade?
O que é Personalidade?O que é Personalidade?
O que é Personalidade?
 
Aula 3 - Personalidade e Processos Psicológicos Básicos
Aula 3 -  Personalidade e Processos Psicológicos BásicosAula 3 -  Personalidade e Processos Psicológicos Básicos
Aula 3 - Personalidade e Processos Psicológicos Básicos
 
A Gestão de Pessoas presente no livro A Arte da Guerra
A Gestão de Pessoas presente no livro A Arte da GuerraA Gestão de Pessoas presente no livro A Arte da Guerra
A Gestão de Pessoas presente no livro A Arte da Guerra
 
Teorias da personalidade
Teorias da personalidadeTeorias da personalidade
Teorias da personalidade
 
Apostila de recrutamento e selecao
Apostila de recrutamento e selecaoApostila de recrutamento e selecao
Apostila de recrutamento e selecao
 
Percepção
PercepçãoPercepção
Percepção
 
Personalidade
PersonalidadePersonalidade
Personalidade
 
Técnicas de Recrutamento
Técnicas de RecrutamentoTécnicas de Recrutamento
Técnicas de Recrutamento
 
Psicologia Do Desenvolvimento
Psicologia Do DesenvolvimentoPsicologia Do Desenvolvimento
Psicologia Do Desenvolvimento
 
Dicas de recrutamento e seleção
Dicas de recrutamento e seleçãoDicas de recrutamento e seleção
Dicas de recrutamento e seleção
 
Recrutamento e selecao de pessoal
Recrutamento e selecao de pessoalRecrutamento e selecao de pessoal
Recrutamento e selecao de pessoal
 
Psicologia do desenvolvimento e da aprendizagem
Psicologia do desenvolvimento e da aprendizagemPsicologia do desenvolvimento e da aprendizagem
Psicologia do desenvolvimento e da aprendizagem
 
Catalogo de testes
Catalogo de testesCatalogo de testes
Catalogo de testes
 
Psicologia da Educação
Psicologia da Educação Psicologia da Educação
Psicologia da Educação
 
Recrutamento e seleção de pessoas
Recrutamento e seleção de pessoasRecrutamento e seleção de pessoas
Recrutamento e seleção de pessoas
 

Semelhante a Testes unitários: validação automática de código

Testes de unidade - RP Tec Com
Testes de unidade - RP Tec ComTestes de unidade - RP Tec Com
Testes de unidade - RP Tec ComIgor Rozani
 
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe munizMatheus de Lara Calache
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
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
 
Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Renato Groff
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosComunidade NetPonto
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com HudsonLuis Reis
 
Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Renato Groff
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"Cesar Romero
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...minastestingconference
 
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
 

Semelhante a Testes unitários: validação automática de código (20)

Testes de unidade - RP Tec Com
Testes de unidade - RP Tec ComTestes de unidade - RP Tec Com
Testes de unidade - RP Tec Com
 
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Apresentação testes white box
Apresentação testes white boxApresentação testes white box
Apresentação testes white box
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
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
 
Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
TDD na Prática
TDD na PráticaTDD na Prática
TDD na Prática
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes Unitários
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com Hudson
 
Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
Testes unitários e Mocks
Testes unitários e MocksTestes unitários e Mocks
Testes unitários e Mocks
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
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
 
JUnit Sample
JUnit SampleJUnit Sample
JUnit Sample
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 

Testes unitários: validação automática de código

  • 1. Testes unitários Gilles Rodrigues Ricardo Gonçalves Setembro 2014 | BeiraJUG
  • 2. Agenda •O que são? •Objectivos •Checklist •Vantagens/Desvantagens •Ferramentas –Junit –Mocks •Coding Dojo •Questões/Feedback
  • 3. O que são? É uma forma de realização de testes de software, que permite verificar e validar e correto funcionamento de uma unidade de código desenvolvido
  • 4. Vantagens •Validar se o código desenvolvido implementa o comportamento esperado •Mudança de código com confiança •Evitar regressões •Uma forma de documentação •Menos BUGS 
  • 5. Desvantagens •Tempo adicional de desenvolvimento •Tentação de alterações ao código não pretendidas mas apenas para o tornar testável
  • 6. Checklist •Validar resultados •Boundary Conditions (Ex: Formato de data errada, valores em falta ou fora do intervalo, duplicados….) •Verificar a relação inversa (Ex: raizQuadrada(a)² = a) •Verificação cruzada (Ex: raizQuadrada(a) = Math. sqrt(a)) •Forçar condições de erro e verificar retorno •Performance
  • 8. JUnit •Definição •Anotações •Asserções •Suites •Cobertura
  • 9. Definição •Framework simples open-source para escrita de testes unitários automatizados para Java •TDD aplicável, isto é, desenvolvimento conduzido pelos testes •Integração com ferramentas de build (ex: Ant, Maven) •Baseado essencialmente em anotações
  • 10. Anotações •@Test – método de teste O atributo “timeout” permite estabelecer o tempo máximo em que o teste deve ser executado O atributo “expected” permite validar o levantamento de determinada excepção •@Ignore – método de teste ignorado •@BeforeClass – método executado antes dos demais métodos da classe de teste •@AfterClass – método executado após os demais métodos da classe de teste •@Before – método executado antes de cada caso de teste •@After – método executado após cada caso de teste
  • 14. Suites •Possibilidade de criar conjuntos de testes:
  • 15. Cobertura •Utilizando bibliotecas auxiliares, é possível verificar se os nossos testes unitários cobrem todos os fluxos de execução do código
  • 16. Mockito •Mocks •Definição •Modo de utilização
  • 17. Mocks •Nem sempre é fácil criar testes unitários porque frequentemente existem dependências que não podemos ou devemos testar unitariamente •Mock objects são objetos que simulam o comportamento de outros objetos de forma controlada. •O desenvovlimento em camadas, recorrendo ao uso de interfaces é fundamental para a utilização de mocks •Um exemplo típico será a existência de um mock simulando a camada de acesso a dados (BDD), permitindo testes unitários isolados
  • 18. Definição •Existem frameworks que permitem a manipulação/integração de mocks com JUnit, como por exemplo mockito •Facilita a criação de objetos mock de forma a que os testes fiquem simples e legíveis Essencialmente: •O retorno de determinada chamada pode ser redefinido de teste para teste •A verificação de chamadas, isto é, o número de vezes que um método é invocado, bem como quais os parametros de entrada esperados, é algo programável de forma intuitiva
  • 19. Modo de utilização 1) Inicialização do mock 2) Descrição do comportamento esperado 3) Invocação do método que se pretende testar 4) Verificação/Confirmação da invocação ao método, bem como dos parâmetros de entrada
  • 21. Coding dojo – Calculator Implements unit testing