15

Click here to load reader

JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

  • Upload
    vuphuc

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

JUnit: framework de testesunitários

Fred Lopes

Page 2: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

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

Page 3: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

Testes unitários

Fase do processo de teste em que se testam as menoresunidades de software desenvolvidas Objetivo

prevenir o aparecimento de bug’s oriundo de códigos mal escritos egarantir um nível de qualidade de produto durante odesenvolvimento 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

Page 4: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

JUnit - introdução

Framework (arcabouço) livre para testesautomatizados escrito em Java

Escrito originalmente por Kent Beck (ExtremeProgramming) 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

Page 5: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

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 dedesenvolvimento;

JUnit checa os resultados dos testes e fornece uma respostaimediata;

JUnit é livre e orientado a objetos.

Pode verificar cada método de uma classe Exibição de possíveis erros e/ou falhas

Page 6: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

JUnit - arquitetura

Page 7: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

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étodorunTest); e por fim, limpa o contexto (método tearDown).

setUp() – Método chamado antes de cada método, pode serutilizado 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 umaconexão de banco de dados.

runTest() – Método responsável por controlar a execução de umteste particular.

Classe TestSuite addTest() – Método responsável por adicionar um novo teste.

Page 8: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

JUnit – API resumida

Método Descrição Teste passa se

assertEquals(a,b) Compara dois valores a.equals(b)

assertFalse(a)Avalia uma expressãobooleana

a == false

assertTrue(a) a == true

assertNotNull(a)Compara uma variávelcom nulo

a != null

assertNull(a) a == null

assertNotSame(a,b)Compara dois objetos

a == b

assertSame(a,b) a != b

fail() Causa uma falha noteste atual

Page 9: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

JUnit – boas práticas

Test Case Class: [NomeClasse]Test.java,onde NomeClasse é o nome da classe a sertestada. Exemplo:

Classe: Pessoa classe de teste: PessoaTest

Test Case Method: test[NomeMetodo], ondeNomeMetodo é o método a ser testado. Exemplo:

Método: Pessoa.calculaIdade() PessoaTest.testCalculaIdade()

Page 10: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

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()); }

Page 11: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

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()); }}

Page 12: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

JUnit – exemplo de uso

Fixture: Conjunto de dados de teste e objetosutilizados na execução de um ou mais testes

Para reaproveitar uma Fixture em mais de um teste: Sobrescreva o método setUp() (inicialização)

Sobrescreva o método tearDown() (limpeza)

protected void setUp() {contatos = new ArrayList();

}

protected void tearDown() { contatos.clear();}

Page 13: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

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("itemA");

assertEquals(1, contatos.size());

}

}

Page 14: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

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 ordemde execução dos testes pode não seguir o mesmofluxo do código

Garantia: setUp() será executado antes e tearDown()será executado depois

Page 15: JUnit: framework de testes unitários - dimap.ufrn.brjair/ES/slides/JUnit.pdf · Testes unitários Fase do processo de teste em que se testam as menores unidades de software desenvolvidas

JUnit – Eclipse

Agora vamos ver exemplos reaisfuncionando...