Desenvolvimento Guiado por Testes Lógica é a arte de errar com confiança Joseph Wood Krutch O Valor do código que testa a si próprio • A maior parte do tempo dos programadores é gasta procurando erros de programação no código • "As classes deveriam testar a si próprias" • Saída dos testes, geralmente em modo console "I'm a pretty lazy person and am prepared to work hard in order to avoid work" Martin Fowler O Valor do código que testa a si próprio Dica Assegure-se de que todos os testes sejam automáticos e de que eles verifiquem seus próprios resultados O Valor do código que testa a si próprio • Rode todos os testes freqüentemente (a cada compilação, uma vez por dia...) • Antigos testes que passam a dar problema, terão sido certamente ocasionados pelo novo código introduzido desde a última vez em que os testes foram executados. • Quando você tiver de acrescentar uma nova funcionalidade ao software, comece escrevendo os testes (foco na interface, ao invés da implementação) O framework de testes JUnit • Desenvolvido por Erich Gamma e Kent Beck • Disponível para download em http://www.junit.org • Instalação: 1. Descompacte o arquivo junit3.8.1.zip 2. Acrescente o arquivo junit.jar à variável de ambiente CLASSPATH. Exemplo: set classpath=%classpath%;C:\junit3.8.1\junit.jar O framework de testes JUnit O framework de testes JUnit Integração com o JCreator Integração com o JCreator Integração com o JCreator Integração com o JCreator Integração com o JCreator Integração com o JCreator Um Exemplo: A classe Dado Construir uma classe de Teste para a classe Dado Exemplo: A classe TestaDado Exemplo: Agora escrevo a classe Dado Exemplo: O resultado dos testes Introduzindo um erro Introduzindo um erro Exemplo: Uma forma alternativa Todos os métodos iniciados por test são automaticamente incluídos no conjunto de testes Rodando JUnit em uma interface gráfica Integrando a GUI JUnit ao JCreator Integrando a GUI JUnit ao JCreator Integrando a GUI JUnit ao JCreator Integrando a GUI JUnit ao JCreator Integrando a GUI JUnit ao JCreator Integrando a GUI JUnit ao JCreator Integrando a GUI JUnit ao JCreator Os métodos Assert http://junit.sourceforge.net/javadoc/junit/framework/Assert.html Tips • É melhor escrever e rodar testes incompletos do que não rodar testes completos. • Não se esqueça de testar se as exceções são lançadas quando ocorrem os erros esperados. • Não deixe que o receio de que os testes não possam capturar todos os erros o impeça de escrever os testes que irão capturar a maioria dos erros Exercício Escreva a classe de teste para a classe Calculadora mostrada abaixo: