JUnit: framework de testes unitários. Fred Lopes

Documentos relacionados
TESTE DE SOFTWARE COM XP. Isac Aguiar isacaguiar.com.br

Programação Orientada a Objetos

Teste Automatizado POO. Prof. Marcio Delamaro

Teste Unitários com NUnit. Anderson Martiniano da Rocha

O JUnit permite a realização de testes de unidades, conhecidos como "caixa branca", facilitando assim a correção de métodos e objetos.

JUnit. Facilitando o desenvolvimento e execução de testes unitários em código java. Peterson Rodrigues

Testes Unitários com JUnit

Testes Unitários em Java

Desenvolvimento guiado por testes e ferramentas xunit

Desenvolvimento guiado por testes e ferramentas xunit

Análise e Projeto Orientados a Objetos

Testes com objetos mock. Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Análise e Projeto Orientados a Objetos

Engenharia de Software Aula 21. Revisão da Prova 2. Eduardo Figueiredo.

Prof. Me. Marcos Echevarria

Tela Principal do ArgoUML. ArgoUML: Diagrama de Casos de Uso. Elementos do diagrama. Criar um novo diagrama. Elementos do diagrama

Aula 04 Introdução à Programação Orientada à Objetos

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Ferramenta Selenium. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

Introdução ao Teste Unitário com JUnit

Linguagem de Programação III

Sistema Futebol - Java

Programação Estruturada e Orientada a Objetos

Modulo II JUNIT. Bibliografia. Prof. Ismael H F Santos. JUnit in Action. April 05 Prof. Ismael H. F. Santos -

Palavras Reservadas da Linguagem Java

Linguagem de Programação II Implementação

Programação Orientada a Objetos

Aula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Aula 05 Classes, Atributos, Métodos. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Programação Orientada a Objetos

Escolhendo quais testes rodar através do JUnit e profiles do Maven

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

Linguagem de Programação II Implementação

Aula 08 Relacionamento entre Objetos. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Collections Framework

COMPORTAMENTOS - Observações

Organizando seus Testes Funcionais AUMENTANDO A MANUTENIBILIDADE DE TESTES FUNCIONAIS ATRAVÉS DA ORIENTAÇÃO A OBJETOS.

Desenvolvendo aplicações Java

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Introdução a Testes Automatizados

Programação Orientada a Objetos Classes Abstratas. Sérgio Soares

4 Conceito de Herança

Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

Programação Orientada a Objetos

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software

Programação Estruturada e Orientada a Objetos. Objetos e Métodos

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software

Padrões Fábrica. Simple Factory Factory Method

Interfaces POO. Prof. Marcio Delamaro

Verificação e Validação (V & V)

Orientação a Objetos AULA 09

Moldura de Objectos. Moldura de Objectos Junit em UML

Transcrição:

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) asserttrue(a) assertnotnull(a) assertnull(a) assertnotsame(a,b) assertsame(a,b) fail() Avalia uma expressão booleana Compara uma variável com nulo Compara dois objetos Causa uma falha no teste atual a == false a == true a!= null a == null a == b a!= b

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