2. Objetivos
• Revisão da programação orientada a objetos com Java
• Apresentação do framework de teste de unidade JUnit
2017 Prof. Ivan Ricarte 2
3. Estudo de caso
• Aplicação da vídeo-locadora (sim, coisa do passado...)
• Cliente (Customer) tem, além do nome (name), o registro de alugueis
de filmes
• Para cada aluguel de filme, há a indicação do filme que foi alugado e o
registro da quantidade de dias alugados (daysRented)
• Cada filme tem, além do título (title), uma categoria (priceCode)
associada, que pode ser uma entre lançamento (NEW_RELEASE),
comum (REGULAR) ou infantil (CHILDRENS)
• O método statement(), da classe Customer, gera o relatório (um objeto
String) dos filmes alugados pelo cliente e o valor a ser pago
2017 Prof. Ivan Ricarte 3
4. Utilizando a IDE (NetBeans)
2017 Prof. Ivan Ricarte 4
Diagrama UML
Código Java
21. Código gerado a partir do diagrama UML
2017 Prof. Ivan Ricarte 21
22. 2017 Prof. Ivan Ricarte 22
Obs.: sem atributo referencial para Movie
23. 2017 Prof. Ivan Ricarte 23
Obs.: sem atributo referencial para coleção de Rental,
sem implementação do método
24. Complementação do código
2017 Prof. Ivan Ricarte 24
Incluir operações para:
• Construir objeto com título e código;
• Obter título (não é alterado)
• Obter e alterar código
42. Similarmente, para a classe Rental
2017 Prof. Ivan Ricarte 42
Incluir campo (atributo referencial) para
um objeto da classe Movie
Incluir operações para:
• Construir objeto com filme e dias de
aluguel;
• Obter filme (não alterado)
• Obter dias de aluguel (não alterado)
49. Como testar se as classes estão corretas?
Abordagem 1 (não recomendada): usar o método main
• Pode ser definido para cada classe
• Pode ter um teste que envolva mais de uma classe
2017 Prof. Ivan Ricarte 49
60. Princípios do teste de unidade
Abordagem de teste caixa-preta
• Como o método foi implementado não é relevante
Testa um método de cada vez
Cada método X( ) será verificado por um método de teste
(tipicamente, testX( )) que:
Cria as condições para invocar o método
Invoca o método
Verifica se resultado ou efeito foi o esperado
2017 Prof. Ivan Ricarte 60
69. Como verificar o resultado dos testes
O método fail() é um dos métodos de verificação de resultado de
testes oferecido pelo framework Junit
• Sempre causa a falha do teste
• Usado, por exemplo, para indicar que código atingiu um ponto
que não deveria ser alcançado em condições normais de
execução
Além desse método, outros métodos de asserção são utilizados, tais
como:
• assertEquals(): causa a falha do teste se os dois valores
passados como argumentos não são iguais
• Dois valores: valor esperado, resultado da execução do teste
• assertTrue(): causa a falha do teste se a condição passada como
argumento não for verdadeira
2017 Prof. Ivan Ricarte 69
71. Outros métodos de asserção
Sempre com opção de ter string de mensagem como primeiro argumento:
• assertFalse(condição)
• assertArrayEquals(arrayEsperado, arrayObtido)
• assertNotEquals(valorNãoEsperado, valorObtido)
• assertNull(referenciaObtida)
• assertNotNull(referenciaObtida)
• assertSame(objetoEsperado, objetoObtido)
• assertNotSame(objetoNãoEsperado, objetoObtido)
Para valores e arranjos, há assinaturas para os diferentes tipos primitivos.
2017 Prof. Ivan Ricarte 71
77. Condições especiais de teste: timeout
2017 Prof. Ivan Ricarte 77
Tempo em milissegundos
https://netbeans.org/kb/docs/java/junit-intro_pt_BR.html
78. Condições especiais de teste: exceções
2017 Prof. Ivan Ricarte 78
Classe da exceção que é esperada na execução do teste
https://netbeans.org/kb/docs/java/junit-intro_pt_BR.html