JUnit: framework de testes unitários

  • 1,665 views
Uploaded on

 

More in: Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,665
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
71
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. JUnit: framework de testes unitários Fred Lopes
  • 2. Agenda  Parte 1 - teoria  Testes unitários  JUnit  Introdução  Arquitetura  API resumida  Boas práticas  Exemplos de uso  Parte 2 – prática (Eclipse)  Criando testes  Test Case  Test Suite  Executando testes
  • 3. Testes unitários  Fase do processo de teste em que se testam as menores unidades de software desenvolvidas  Objetivo  prevenir o aparecimento de bug’s oriundo de códigos mal escritos e garantir um nível de qualidade de produto durante o desenvolvimento de software  Responsabilidade do próprio desenvolvedor  Tipicamente executa um método individualmente  compara uma saída conhecida após o processamento da mesma  Não testam todo o software  Em POO: unidade pode ser um método, uma classe ou um objeto
  • 4. JUnit - introdução  Framework (arcabouço) livre para testes automatizados escrito em Java  Escrito originalmente por Kent Beck (Extreme Programming) e Erich Gamma (Design Patterns)  Integração com as principais IDEs  Grande comunidade de usuários  Utilizado principalmente no desenvolvimento de testes de unidade  http://www.junit.org
  • 5. JUnit - introdução  Vantagens  Permite a criação rápida de código de teste possibilitando um aumento na qualidade do desenvolvimento e teste;  Amplamente utilizado pelos desenvolvedores da comunidade código-aberto, possuindo um grande número de exemplos;  Uma vez escritos, os testes são executados rapidamente sem que, para isso, seja interrompido o processo de desenvolvimento;  JUnit checa os resultados dos testes e fornece uma resposta imediata;  JUnit é livre e orientado a objetos.  Pode verificar cada método de uma classe  Exibição de possíveis erros e/ou falhas
  • 6. JUnit - arquitetura
  • 7. JUnit - arquitetura  Classe TestCase  run() – Cria um contexto (método setUp); em seguida executa o código usando um contexto e verifica o resultado (método runTest); e por fim, limpa o contexto (método tearDown).  setUp() – Método chamado antes de cada método, pode ser utilizado para abrir uma conexão de banco de dados.  tearDown() – Método chamado depois de cada método de teste, usado para desfazer o que setUp() fez, por exemplo fechar uma conexão de banco de dados.  runTest() – Método responsável por controlar a execução de um teste particular.  Classe TestSuite  addTest() – Método responsável por adicionar um novo teste.
  • 8. JUnit – API resumida Método Descrição Teste passa se assertEquals(a,b) Compara dois valores a.equals(b) assertFalse(a) a == false Avalia uma expressão assertTrue(a) booleana a == true assertNotNull(a) a != null Compara uma variável assertNull(a) com nulo a == null assertNotSame(a,b) a == b Compara dois objetos assertSame(a,b) a != b fail() Causa uma falha no teste atual
  • 9. JUnit – boas práticas  Test Case Class: [NomeClasse]Test.java, onde NomeClasse é o nome da classe a ser testada.  Exemplo:  Classe: Pessoa  classe de teste: PessoaTest  Test Case Method: test[NomeMetodo], onde NomeMetodo é o método a ser testado.  Exemplo:  Método: Pessoa.calculaIdade()  PessoaTest.testCalculaIdade()
  • 10. JUnit – exemplo de uso import junit.framework.TestCase; /** * Testes de unidade para a classe {@link Pessoa} */ public class TestPessoa extends TestCase { /** * Um teste de unidade para verificar se o nome está * formatado corretamente */ public void testObterNomeCompleto() { Pessoa p = new Pessoa(“Fulano”, “Tal”); assertEquals(“Fulano Tal”, p.getNomeCompleto()); }
  • 11. JUnit – exemplo de uso /** * Um teste de unidade para verificar se os nulos são * tratados corretamente */ public void testNomeEhNulo() { Pessoa p = new Pessoa(null, “Tal”); assertEquals(“? Tal”, p.getNomeCompleto()); // Este código só é executado se passar pelo // assertEquals anterior. p = new Pessoa(“Fulano”, null); assertEquals(“Fulano ?”, p.getNomeCompleto()); } }
  • 12. JUnit – exemplo de uso  Fixture: Conjunto de dados de teste e objetos utilizados na execução de um ou mais testes  Para reaproveitar uma Fixture em mais de um teste:   Sobrescreva o método setUp() (inicialização) protected void setUp() { contatos = new ArrayList(); }  Sobrescreva o método tearDown() (limpeza) protected void tearDown() { contatos.clear(); }
  • 13. JUnit – exemplo de uso public class TesteSimples extends TestCase { private Collection colecao; protected void setUp() { contatos = new ArrayList(); } protected void tearDown() { contatos.clear(); } public void testColecaoVazia() { assertTrue(contatos.isEmpty()); } public void testColecaoComUmItem() { contatos.add(quot;itemAquot;); assertEquals(1, contatos.size()); } }
  • 14. JUnit – exemplo de uso  Possível ordem de execução:   setUp()  testColecaoComUmItem()  tearDown()  setUp()  testColecaoVazia()  tearDown()  Como os testes são chamados por reflexão, a ordem de execução dos testes pode não seguir o mesmo fluxo do código  Garantia: setUp() será executado antes e tearDown() será executado depois
  • 15. JUnit – Eclipse  Agora vamos ver exemplos reais funcionando...