Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouArtur Marreiro Peixoto Alterado mais de 8 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.