Artigo Java Magazine 07 - Testes unitários
Artigo publicado pela Java Magazine 07.
Clique aqui para ler esse artigo em PDF.
Testes unitários
JUnit, automação com Ant e sugestões para a a implantação eficaz de testes unitários
A criação de testes unitários pode parecer, de início, algo trabalhoso e possivelmente sem retorno no desenvolvimento, mas quando testes são implementados de maneira produtiva, as vantagens começam a aparecer, tão cedo quanto as primeiras mudanças no ambiente ou nas funcionalidades da aplicação.
Imagine mudar o tipo do campo de uma tabela acessada por mais de um componente Java, por exemplo. Pode parecer complicado garantir que o sistema continua funcionando corretamente após uma mudança desse tipo, mas é aí que entram os testes sistematizados e automatizados. Testes executados diariamente, de forma automática, apontam problemas assim que eles acontecem, reduzindo bastante o custo de consertá-los.
Neste artigo, veremos como criar testes unitários com o JUnit e como automatizá-los com o Ant, além de discutir sugestões e melhores práticas.
JUnit
O JUnit é um framework de testes já bastante conhecido e amplamente usado no mercado. As principais ferramentas de desenvolvimento se integram com o JUnit e existem muitas extensões e ferramentas livres.
A criação de testes com o JUnit é simples – tudo é feito seguindo um modelo de programação bem definido e auxiliado por uma biblioteca. O framework inclui, basicamente:
• Uma classe base, que as classes de testes da aplicação devem estender;
• Um conjunto de métodos auxiliares para a verificação de asserções, tais como checar a igualdade do conteúdo de dois objetos;
• Ferramentas para execução dos testes.
O diagrama UML da Figura 1 mostra o que é necessário para criar uma classe de teste do JUnit: estender a classe TestCase e criar métodos com o prefixo test. As subclasses de TestCase são automaticamente reconhecidas pelo ambiente de execução do JUnit.
Os métodos herdados da classe Assert são usados para verificar o resultado de operações nos testes. Também é possível criar “suítes” compostas por várias classes de teste através do método estático suite.
Existem, ainda, dois métodos importantes, também herdados da classe TestCase, que devem ser redefinidos quando necessário:
•setUp – usado para gerar um fixture, um conjunto de objetos inicializados compartilhado por vários testes. É executado antes de cada método de testes, de modo a garantir que cada um inicie com uma situação conhecida. setUp também pode ser usado para alocar recursos, tais como conexões com bancos de dados;
• tearDown – executado após cada método de teste; pode ser usado para liberar recursos alocados durante o método setUp, por exemplo fechando conexões com bancos de dados. Muitas vezes, não é necessário implementar tearDown, já que cada teste é executado em uma nova instância de "
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo