1 / 23

J U nit

J U nit. Um Framework Para Testes. Sylvia Campos Rodrigo Lumack {scls, rlmb }@cin.ufpe.br. 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

Download Presentation

J U nit

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JUnit Um Framework Para Testes Sylvia Campos Rodrigo Lumack {scls, rlmb}@cin.ufpe.br

  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 creditar(double valor) definimos o método testCreditar() na classe ContaTest; public void testCreditar() { Conta c = new Conta(1, 100); c.creditar(50.0); assertTrue(c.getSaldo() == 150); } • 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 • Descompacte o arquivo junit3.8.1.zip. • Baixe a classe Conta.java em www.cin.ufpe.br/~scls/ES • 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(PoupancaTest.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. Testes conduzem o projeto OO • Decida o que o componente deve fazer. • Projeto o componente (sua interface pública) • Escreva os testes de unidade • Escreva o componente até que todos os testes passem • Escreva teste para outras possibilidade de falha • Escreva testes antes de corrigir um bug • Execute todos os testes antes de publicar uma alteração (regressão)

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

  23. JUnit Um Framework Para Testes

More Related