A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

J U nit Um Framework Para Testes. Motivação  Todos os programadores sabem que devem testar seu código  Quanto mais curto o prazo menos testes são realizados.

Apresentações semelhantes


Apresentação em tema: "J U nit Um Framework Para Testes. Motivação  Todos os programadores sabem que devem testar seu código  Quanto mais curto o prazo menos testes são realizados."— Transcrição da apresentação:

1 J U nit Um Framework Para Testes

2 Motivação  Todos os programadores sabem que devem testar seu código  Quanto mais curto o prazo menos testes são realizados  Necessidade de testar cada método separadamente  Centralizar o código de testes  Regras já definidas para apresentação de erros  Possibilidade de automatização

3 Testes em Software  Revelam erros no código  Garantem que a implementação respeita a especificação  Devem ser automatizados a fim de serem facilmente executados sempre que necessário  Garantem a qualidade do software durante todo o ciclo de vida

4 Testes Automatizados  Avaliam se um programa funciona como esperado  Exemplo: main()  Validam os requisitos

5 Testes de Unidade  Testam a aplicação em seus menores componentes, isoladamente  Testam unidades lógicas Métodos Objetos  Maior número de erros detectados  Erros mais fáceis de corrigir  Devem ser executados continuamente

6 Testes de Integração  Testam como uma coleção de unidades interage entre si ou com o ambiente onde executam  Executados continuamente (caso as unidades em desenvolvimento dependam de outras)

7 Testes Funcionais  Ponto de vista do usuário  Testam casos de uso  Validam a interface com o usuário, as operações requisitadas, etc.  São menos estáveis do que os outros tipos

8 JUnit  Framework para facilitar o desenvolvimento e a execução de testes de unidade em programas Java  Modelo de programação para a criação de testes de unidade  Sugerido por Kent Beck

9 JUnit  API para construir testes junit.framework.*  Aplicações para executar testes TestRunner

10 JUnit  O framework JUnit pode ser resumido em uma classe pai para todos os casos de teste (chamada TestCase) que fornece ferramentas para rodar testes, gerar relatórios e definir conjuntos de testes

11 Escrevendo uma classe de teste Assuma uma classe Conta Para testar a classe definimos uma classe ContaTest import test.framework.TestCase; public class ContaTest extends TestCase { public ContaTest(String testCase) { super(testCase); }

12 Escrevendo uma classe de teste  Para testar o método getSaldo() definimos o método testGetSaldo() na classe ContaTest; public void testGetSaldo() { Conta c = new Conta(1, 100); assertTrue(c.getSaldo() == 100); }  Para cada método da classe Conta é definido um método na classe ContaTest

13 Principais Asserções  assertEquals(objEsperado, objRecebido);  assertTrue(expBooleana);  assertNull(obj);  assertNotNull(obj)  assertSame(obj1, obj2);  fail(mensagem);

14 Instalando e Rodando o JUnit  www.junit.org www.junit.org  Descompacte o arquivo junit3.8.1.zip.  Baixe a classe Conta.java em www.cin.ufpe.br/~abab/arquivos/junit www.cin.ufpe.br/~abab/arquivos/junit  Incluir o arquivo junit.jar no classpath  Crie uma classe ContaTest que será o test case da classe Conta.

15 Funcionamento  O TestRunner recebe uma subclasse de junit.framework.TestCase e executa o método run(Test) Obtém dados de TestSuite - suite() TestSuite usa Java Reflection para descobrir os métodos de teste

16 Funcionamento public static Test suite(){ return new TestSuite(ContaTest.class); } public static void main(String[] args){ junit.textui.TestRunner.run(suite()); }

17 TestSuite  Composição de testes public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new ContaTest("testGetSaldo")); suite.addTest(new ContaTest("testCreditar")); return suite; }  Um TestSuite é usado pelo TestRunner para saber quais métodos devem ser executados como testes

18 TestSuite  Para executar mais de um teste de uma vez e/ou reusar testes de outras classes (testes regressivos) public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new ContaTest("testSaldoConta")); suite.addTest(new ContaTest("testCredito")); suite.addTest(Poupanca.suite()); return suite; }

19 Como funciona  As asserções causam falhas quando os resultados não estiverem corretos test.framework.AssertionFailedError  Cada instância de TestCase será utilizada para executar um dos métodos de teste As alterações que ele fizer ao estado do objeto não afetarão as demais classes

20 Boas Práticas  Escreva o código de testes antes da implementação. Dessa forma, você terá uma implementação dirigida por contrato  Teste somente métodos que podem estar quebrados (assim, métodos get e set não devem ser testados na maioria dos casos)  Teste sempre que possível

21 Limitações  Métodos private e variáveis locais  Isolar em métodos private apenas código inquebrável  Transformar métodos private em package- private Redução do encapsulamento Redução da modularização (classes de teste espalhadas)  JUnitX Usa reflection para ter acesso a dados private http://www.extreme-java.de/junitx/index.html

22 Referências http://www.junit.org

23 J U nit Um Framework Para Testes


Carregar ppt "J U nit Um Framework Para Testes. Motivação  Todos os programadores sabem que devem testar seu código  Quanto mais curto o prazo menos testes são realizados."

Apresentações semelhantes


Anúncios Google