Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Presbiteriana Mackenzie Introdução ao JUnit Profa. Ana Cristina dos Santos Faculdade de Computação e Informática Linguagem de Programação I 1 Objetivos • Praticar testes de implementação utilizando o framework JUnit; • Formar um base prática de uso da classe String e seus objetos como motivadora para o estudo de orientação a objetos, com conceitos básicos como classes, objetos e métodos; Introdução ao JUnit 2 Verificação de Implementações • Até o presente momento, ainda não temos uma maneira muito efetiva para testar os programas que implementamos. • Verificamos nossas implementações através da impressão de informação relevante (?) na saída padrão (System.out). • Nosso método de verificação contamina nossa implementação. 3Introdução ao JUnit Exemplo 1 public class Exemplo { public static boolean contem(String s,String t){ return s.contains(t); } public static void main(String[] args) { String s = "Linguagem de Programação I"; String t = "Linguagem"; if (contem(s,t)){ System.out.println(“Funcionou!”); } else { System.out.println(“Não funcionou!”); } } } 4Introdução ao JUnit E se... • Tivéssemos outras funções/procedimentos além do contem? – Teríamos que criar mais blocos if-then-else no nosso main para verifica-los. – A informação de saída relevante precisaria ser mais detalhada, pelo menos informando qual foi a função/procedimento testado. • Fosse necessário verificar a execução da função/procedimento com diversos tipos de dados de entrada? – Teríamos que criar mais blocos if-then-else no nosso main para verificar cada caso. – A informação de saída relevante precisaria ser mais detalhada, informando qual foi a função/procedimento testado e qual o dado de entrada utilizado. • Todos as funções/procedimentos estiverem funcionando a contento? – Como posso retirar a verificação depois que verifiquei que tudo está funcionando a contento? 5Introdução ao JUnit 6 Exemplo 2 Escreva um método na classe Ponto para verificar se dois objetos do tipo Ponto são iguais // teste public class testaPonto4{ public static void main( String args[] ){ Ponto p1 = new Ponto(10,10); Ponto p2 = new Ponto(10,11); // saida esperada false System.out.println( p1.igual(p2) ); } } 7 Implementando e Testando A ideia de usar esses tipos testes a medida que implementamos a classe Ponto tem o intuito forçar o programador a criar classes e métodos que realmente necessita, e garantir que eles sejam testados! O design da classe também costuma sair mais simples, pois uma classe com muitas dependências e acoplamento é difícil ser testada. Essa forma de desenvolver é conhecida como desenvolvimento dirigido a testes (Test-Driven Development, TDD). 8 O Framework JUnit Test-Driven Development (TDD), é uma das práticas mais populares de testes entre desenvolvedores, a ideia é bem simples: escreva seus testes antes mesmo de escrever o código de produção. O TDD encoraja designs de código simples e inspira confiança e é relacionado a conceitos da Extreme Programming. 9 O Framework JUnit Para implementar o TDD automaticamente na linguagem Java utilizamos o JUnit (junit.org), que é um framework muito simples para criação de testes de unidade e em especial sua execução. Ele possui alguns métodos que tornam seu código de teste bem legível e fácil de fazer as asserções. Uma asserção é uma afirmação, que pode ser verdadeira ou falsa, se os testes indicarem um comportamento correto (verdadeiro), os programadores podem evoluir o código, caso falhe (falso) indica um possível bug. JUnit e Netbeans • O framework JUnit é disponibilizado como um pacote (.JAR) para a linguagem Java (ex: junit-4.10.jar) • Para utilizar o framework JUnit precisamos incluir o pacote .jar no projeto no netbeans. • Para executar os testes implementados no Netbeans, utilizar as teclas de atalho (Alt + F6). 10Introdução ao JUnit O Framework JUnit • O framework JUnit é disponibilizado como um pacote (.JAR) para a linguagem Java (ex: junit- 4.10.jar) • Facilita a verificação de nossas implementações no dia-a-dia do desenvolvimento. 11Introdução ao JUnit 12 O Framework JUnit Para adicionar o JUnit em um projeto no NetBeans, clique em biblioteca na janela de projetos e escolha adicionar biblioteca. 13 O Framework JUnit Após adicionar o JUnit, basta adicionar os testes dos métodos. 14 O Framework JUnit Após adicionar o JUnit, basta adicionar os testes dos métodos. 15 Como fazer uma asserção Para cada classe, teremos uma classe correspondente (por convenção, com o sufixo Test) que contará todos os testes relativos aos métodos dessa classe Em vez de um main, criamos um método com nome expressivo para descrever a situação que ele está testando. Mas... como o JUnit saberá que deve executar aquele método? Para isso anotamos este método com @Test, que fará com que o JUnit saiba no momento de execução, de que aquele método deva ser executado: 16 Como fazer uma Asserção Uma asserção é definida através dos métodos estáticos da classe Assert, importada do org.junit. import org.junit.Assert; import org.junit.Test; Por exemplo para verificar a saída : Ponto p1 = new Ponto(); Assert.assertEquals("(0,0)", p1.toString()); O primeiro argumento é o que chamamos de expected, e ele representa o valor que esperamos para argumento seguinte (chamado de actual). 17 Resultado do Teste Se o valor for diferente do esperado, o teste não passará e uma barrinha vermelha será mostrada, juntamente com uma mensagem que diz: expected <valor esperado> but was <o que realmente deu> 18 Testando a classe Ponto A classe completa para teste ficaria assim: public class PontoTest { @Test public void testPonto() { Ponto p1 = new Ponto(); Assert.assertEquals("(0,0)", p1.toString()); } } O Framework JUnit • Implementamos normalmente nossa função/procedimento: public class Exemplo { public static boolean contem(String s,String t){ return s.contains(t); } } • Implementamos um classe de teste para nossa função/procedimento: public class ExemploTest { @Test public void testeContem() { String s = "Linguagem de Programação I"; String t = "Linguagem"; Assert.assertTrue(Exemplo.contem(s, t)); } } 19Introdução ao JUnit Uso da classe Assert O Framework JUnit • Notem que não precisamos implementar main. • Nosso teste foi implementado em uma classe separada. Não contaminamos a implementação da função/procedimento. • Em cada classe de teste, podemos implementar diversos testes (convém agrupa-los de forma adequada). • O relatório de execução dos testes inclui o nome dado ao teste, portanto este nome é de grande importância. 20Introdução ao JUnit Obrigada Profa. Ana Cristina dos Santos anacristina.santos@mackenzie.br 21Introdução ao JUnit
Compartilhar