SlideShare uma empresa Scribd logo
TDD com JUnit
S E M I N Á R I O D E T E S T E S - E N G E N H A R I A D E S O F T WA R E
I N S T I T U TO D E E N G E N H A R I A E T E C N O LO G I A – I E T
C E N T R O U N I V E R S I TÁ R I O D E B E LO H O R I Z O N T E – U N I B H
D E Z E M B R O D E 2 0 1 6
Integrantes
Bruno Meirelles Souza
Deborah Moreira Bertoni da Silva
Guilherme Alberto de Moraes
Hebert Reis Júnior
Lucas Maia Veríssimo
Michael Vinicius de Souza Gonçalves
CIC4BN-ESA
Test Driven Development
Prática de desenvolvimento no qual a escrita dos códigos de testes
ocorrem antes da escrita do código funcional.
Atividades de Teste, Codificação e Refatoração .
Permite conformidade e objetividade no código desenvolvido.
JUnit
Framework para escrita de testes repetitivos em Java.
É um exemplo da arquitetura xUnit de frameworks de teste da
unidade.
Possui dependência em Maven.
Exemplo
No exemplo vemos uma classe Operations sendo testada pela
OperationsTest
public class OperationsTest {
@Test
public void sumTest() {
int expected = 5;
int actual = Operations.sum(2,
3);
assertEquals(expected, actual);
}
}
public class Operations {
public static int sum(int a, int b) {
return a + b;
}
}
Aplicação
Desenvolvimento de árvore binaria testada com JUnit.
Etapas de desenvolvimento:
◦ Criação do projeto Maven
◦ Geração de assinaturas do código
◦ Confecção dos testes
◦ Confecção do código
Criação do projeto Maven
Permite gestão de dependências
de um projeto.
Tem por padrão um diretório
dedicado a Classes e testes.
Geração de assinaturas do código
Etapa de definição de classes e
métodos que serão consumidos
Os métodos ainda não
implementam as regras, apenas
definem suas funções.
Confecção dos testes
Os testes são então gerados no
devido diretório.
As dependências são criadas no
método assinado com a anotação
@Before
Os testes são implementados nos
métodos com a anotação @Test
Confecção dos testes
O código deve ser gerado de uma
forma simples e objetiva.
A partir desse momento, os testes
devem ser todos aprovados.
Confecção do código
O código deve ser gerado de uma
forma simples e objetiva.
A partir desse momento, os testes
devem ser todos aprovados.
Padrões com JUnit
Use os métodos de asserção mais apropriados
@Test
public void emptyTreeIsEmptyTest() {
assertTrue(emptyTree.isEmpty());
}
@Test
public void emptyTreeIsEmptyTest() {
assertEquals(true, emptyTree.isEmpty());
}
Padrões com JUnit
Coloque parâmetros de asserção na ordem expected, e então actual
@Test
public void addTest() {
BinaryTree expected = new BinaryTree();
...
assertEquals(expected, populatedTree);
}
@Test
public void addTest() {
BinaryTree expected = new BinaryTree();
...
assertEquals(populatedTree, expected);
}
Padrões com JUnit
Não utilize blocos try-catch dentro dos testes, dê preferência para a clausula expected
após o comentário @Test.
@Test(expected = IllegalArgumentException.class)
public void invalidRemovalTest() throws IllegalArgumentException{
populatedTree.remove(10);
}
@Test
public void invalidRemovalTest() throws IllegalArgumentException{
boolean exp = false;
try{
populatedTree.remove(10);
} catch (IllegalArgumentException e){
exp = true;
}
assertTrue(exp);
}
Padrões com JUnit
Tenha certeza que os testes estão
no mesmo pacote do código, mas
em diretórios separados.
Problemas comuns
Erros Individuais:
◦ Não executar testes frequentemente
◦ Muitos ensaios de uma só vez
◦ Testes triviais
Erros em equipe:
◦ Adoção parcial do TDD
◦ Falta de manutenção do conjunto de testes
◦ Conjunto de testes abandonado
Benefícios de TDD
Segurança na correção de bugs
Segurança no Refactoring
Código mais limpo (redução de defeitos)
Código da aplicação mais flexível (menos acoplado)
Maior produtividade (redução de esforço)
Conclusões
O TDD e os testes gerados dão feedback muito mais rápido sobre a
qualidade do software
O TDD, como qualquer outra prática de Engenharia de Software não
deve ser executado 100% do tempo
Design de classes melhor e mais flexível
Referências
Agile Alliance. Definition. Agile Alliance All Rights Reserved. Web
Development Company: 352 Inc. Disponível em:
https://www.agilealliance.org/glossary/tdd/. Acesso em: 3 Dez 2016.
BLANEY, Kyle. Melhores práticas JUnit. Disponível em:
http://www.kyleblaney.com/junit-best-practices/. Acesso em: 3 Dez 2016.
ANICHE, Maurício. Test-Driven Development. Abril/2014. Disponível em:
http://tdd.caelum.com.br/. Acesso em: 3 Dez 2016.
ANICHE, Maurício. É “Test-Driven Design” e não “Design Done by Tests”.
Dezembro/2010. Disponívle em: http://www.aniche.com.br/2010/12/eh-
tdd-e-nao-ddt/. Acesso em: 3 Dez 2016.
GAMA, Alexandre. Test Driven Development: TDD simples e prático.
Disponível em: http://www.devmedia.com.br/test-driven-development-
tdd-simples-e-pratico/18533. Acesso em: 3 Dez 2016.
Dúvidas?

Mais conteúdo relacionado

PPTX
TDD Desenvolvimento orientado ao teste
PDF
TDD com Python
PPTX
TDD em 220V
PDF
Test-Driven Develpment - TDD
PPTX
TDD (Test-Driven Development)
PDF
Facilitando o desenvolvimento orientado a testes em aplicações PHP
PDF
Testes Unitários
PPTX
Testes Unitários/Integrados
TDD Desenvolvimento orientado ao teste
TDD com Python
TDD em 220V
Test-Driven Develpment - TDD
TDD (Test-Driven Development)
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Testes Unitários
Testes Unitários/Integrados

Mais procurados (20)

PPTX
Test-Driven Development (TDD) utilizando o framework xUnit.net
PDF
Implementando Testes Unitários em Java - Manoel Pimentel
PPT
Junit 4.0
PPT
PPTX
TDD na Prática
PPT
TDD - Test Driven Development com JAVA
PDF
Introdução ao TDD
PDF
Palestra Testes Unidade Com JUnit
PDF
Introdução ao TDD (Test-Driven Development) - #guma10anos
PPTX
Unit Testing
PPTX
Test driven development
PPTX
Palestra tdd - rsjug
PDF
TDD - Pós Graduação em Engenharia de Software Ágil
PDF
Mutant Testing: um mundo para um X-Testing.
PPT
Treinamento Testes Unitários - parte 1
PPT
Introdução a testes unitários automatizados com JUnit e NUnit
PPT
Desenvolvimento Guiado Por Testes
PPTX
Por que automatizar testes de software?
Test-Driven Development (TDD) utilizando o framework xUnit.net
Implementando Testes Unitários em Java - Manoel Pimentel
Junit 4.0
TDD na Prática
TDD - Test Driven Development com JAVA
Introdução ao TDD
Palestra Testes Unidade Com JUnit
Introdução ao TDD (Test-Driven Development) - #guma10anos
Unit Testing
Test driven development
Palestra tdd - rsjug
TDD - Pós Graduação em Engenharia de Software Ágil
Mutant Testing: um mundo para um X-Testing.
Treinamento Testes Unitários - parte 1
Introdução a testes unitários automatizados com JUnit e NUnit
Desenvolvimento Guiado Por Testes
Por que automatizar testes de software?
Anúncio

Destaque (13)

PDF
JUnit PowerUp
PPT
PDF
Test driven development - JUnit basics and best practices
PPT
Test Driven Development and JUnit
PDF
Unit testing with Junit
PPSX
PDF
JUnit & Mockito, first steps
PPTX
PPTX
JUnit- A Unit Testing Framework
PPS
JUnit Presentation
PDF
Introduction To UnitTesting & JUnit
PDF
Unit testing with JUnit
PDF
Android Unit Tesing at I/O rewind 2015
JUnit PowerUp
Test driven development - JUnit basics and best practices
Test Driven Development and JUnit
Unit testing with Junit
JUnit & Mockito, first steps
JUnit- A Unit Testing Framework
JUnit Presentation
Introduction To UnitTesting & JUnit
Unit testing with JUnit
Android Unit Tesing at I/O rewind 2015
Anúncio

Semelhante a JUnit Sample (20)

PPTX
Apresentação lições aprendidas
PPTX
Apresentação lições aprendidas
PPTX
Teste Driven Development
PDF
Desenvolvimento Dirigido por Testes com Junit
PPTX
1 2 3 - Testando - Automatizando os testes de software
PDF
Testes de Unidade com JUnit
PPT
Treinamento Testes Unitários - parte 2
PPTX
Apresentacao Testes de Unidade
PPTX
Pensando em java univali turbinando seus testes
PDF
TDD e UnitTest em Java
PDF
J unit xp
PDF
Testes de Unidade com Junit
PPTX
Desenvolvimento orientado a testes - TDD
PPTX
Desenvolvimento dirigido por comportamento e por teste
PPT
TDD - Test Driven Development
PDF
Teste de software
PPT
Test driven development
PPTX
J unit
PPTX
Paletra sobre TDD, ocorrida no #DevDojo
PPTX
Unit test & TDD
Apresentação lições aprendidas
Apresentação lições aprendidas
Teste Driven Development
Desenvolvimento Dirigido por Testes com Junit
1 2 3 - Testando - Automatizando os testes de software
Testes de Unidade com JUnit
Treinamento Testes Unitários - parte 2
Apresentacao Testes de Unidade
Pensando em java univali turbinando seus testes
TDD e UnitTest em Java
J unit xp
Testes de Unidade com Junit
Desenvolvimento orientado a testes - TDD
Desenvolvimento dirigido por comportamento e por teste
TDD - Test Driven Development
Teste de software
Test driven development
J unit
Paletra sobre TDD, ocorrida no #DevDojo
Unit test & TDD

Último (11)

PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Utilizando code blockes por andre backes
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Eng. Software - pontos essenciais para o início
PPTX
Design - Introdução a Gestalt e teoria das formas
Tipos de servidor em redes de computador.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Arquitetura de computadores - Memórias Secundárias
Viasol Energia Solar -Soluções para geração e economia de energia
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Manejo integrado de pragas na cultura do algodão
Utilizando code blockes por andre backes
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Eng. Software - pontos essenciais para o início
Design - Introdução a Gestalt e teoria das formas

JUnit Sample

  • 1. TDD com JUnit S E M I N Á R I O D E T E S T E S - E N G E N H A R I A D E S O F T WA R E I N S T I T U TO D E E N G E N H A R I A E T E C N O LO G I A – I E T C E N T R O U N I V E R S I TÁ R I O D E B E LO H O R I Z O N T E – U N I B H D E Z E M B R O D E 2 0 1 6
  • 2. Integrantes Bruno Meirelles Souza Deborah Moreira Bertoni da Silva Guilherme Alberto de Moraes Hebert Reis Júnior Lucas Maia Veríssimo Michael Vinicius de Souza Gonçalves CIC4BN-ESA
  • 3. Test Driven Development Prática de desenvolvimento no qual a escrita dos códigos de testes ocorrem antes da escrita do código funcional. Atividades de Teste, Codificação e Refatoração . Permite conformidade e objetividade no código desenvolvido.
  • 4. JUnit Framework para escrita de testes repetitivos em Java. É um exemplo da arquitetura xUnit de frameworks de teste da unidade. Possui dependência em Maven.
  • 5. Exemplo No exemplo vemos uma classe Operations sendo testada pela OperationsTest public class OperationsTest { @Test public void sumTest() { int expected = 5; int actual = Operations.sum(2, 3); assertEquals(expected, actual); } } public class Operations { public static int sum(int a, int b) { return a + b; } }
  • 6. Aplicação Desenvolvimento de árvore binaria testada com JUnit. Etapas de desenvolvimento: ◦ Criação do projeto Maven ◦ Geração de assinaturas do código ◦ Confecção dos testes ◦ Confecção do código
  • 7. Criação do projeto Maven Permite gestão de dependências de um projeto. Tem por padrão um diretório dedicado a Classes e testes.
  • 8. Geração de assinaturas do código Etapa de definição de classes e métodos que serão consumidos Os métodos ainda não implementam as regras, apenas definem suas funções.
  • 9. Confecção dos testes Os testes são então gerados no devido diretório. As dependências são criadas no método assinado com a anotação @Before Os testes são implementados nos métodos com a anotação @Test
  • 10. Confecção dos testes O código deve ser gerado de uma forma simples e objetiva. A partir desse momento, os testes devem ser todos aprovados.
  • 11. Confecção do código O código deve ser gerado de uma forma simples e objetiva. A partir desse momento, os testes devem ser todos aprovados.
  • 12. Padrões com JUnit Use os métodos de asserção mais apropriados @Test public void emptyTreeIsEmptyTest() { assertTrue(emptyTree.isEmpty()); } @Test public void emptyTreeIsEmptyTest() { assertEquals(true, emptyTree.isEmpty()); }
  • 13. Padrões com JUnit Coloque parâmetros de asserção na ordem expected, e então actual @Test public void addTest() { BinaryTree expected = new BinaryTree(); ... assertEquals(expected, populatedTree); } @Test public void addTest() { BinaryTree expected = new BinaryTree(); ... assertEquals(populatedTree, expected); }
  • 14. Padrões com JUnit Não utilize blocos try-catch dentro dos testes, dê preferência para a clausula expected após o comentário @Test. @Test(expected = IllegalArgumentException.class) public void invalidRemovalTest() throws IllegalArgumentException{ populatedTree.remove(10); } @Test public void invalidRemovalTest() throws IllegalArgumentException{ boolean exp = false; try{ populatedTree.remove(10); } catch (IllegalArgumentException e){ exp = true; } assertTrue(exp); }
  • 15. Padrões com JUnit Tenha certeza que os testes estão no mesmo pacote do código, mas em diretórios separados.
  • 16. Problemas comuns Erros Individuais: ◦ Não executar testes frequentemente ◦ Muitos ensaios de uma só vez ◦ Testes triviais Erros em equipe: ◦ Adoção parcial do TDD ◦ Falta de manutenção do conjunto de testes ◦ Conjunto de testes abandonado
  • 17. Benefícios de TDD Segurança na correção de bugs Segurança no Refactoring Código mais limpo (redução de defeitos) Código da aplicação mais flexível (menos acoplado) Maior produtividade (redução de esforço)
  • 18. Conclusões O TDD e os testes gerados dão feedback muito mais rápido sobre a qualidade do software O TDD, como qualquer outra prática de Engenharia de Software não deve ser executado 100% do tempo Design de classes melhor e mais flexível
  • 19. Referências Agile Alliance. Definition. Agile Alliance All Rights Reserved. Web Development Company: 352 Inc. Disponível em: https://www.agilealliance.org/glossary/tdd/. Acesso em: 3 Dez 2016. BLANEY, Kyle. Melhores práticas JUnit. Disponível em: http://www.kyleblaney.com/junit-best-practices/. Acesso em: 3 Dez 2016. ANICHE, Maurício. Test-Driven Development. Abril/2014. Disponível em: http://tdd.caelum.com.br/. Acesso em: 3 Dez 2016. ANICHE, Maurício. É “Test-Driven Design” e não “Design Done by Tests”. Dezembro/2010. Disponívle em: http://www.aniche.com.br/2010/12/eh- tdd-e-nao-ddt/. Acesso em: 3 Dez 2016. GAMA, Alexandre. Test Driven Development: TDD simples e prático. Disponível em: http://www.devmedia.com.br/test-driven-development- tdd-simples-e-pratico/18533. Acesso em: 3 Dez 2016.

Notas do Editor