JUnit: framework de testes unitários
Upcoming SlideShare
Loading in...5
×
 

JUnit: framework de testes unitários

on

  • 2,470 views

 

Statistics

Views

Total Views
2,470
Views on SlideShare
2,469
Embed Views
1

Actions

Likes
0
Downloads
70
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

JUnit: framework de testes unitários JUnit: framework de testes unitários Presentation Transcript

  • JUnit: framework de testes unitários Fred Lopes
  • 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
  • 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
  • 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
  • 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
  • JUnit - arquitetura
  • 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.
  • 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
  • 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()
  • 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()); }
  • 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()); } }
  • 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(); }
  • 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()); } }
  • 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
  • JUnit – Eclipse  Agora vamos ver exemplos reais funcionando...