Implementando eXtreme Programming em Java
Integração contínua e testes de unidade
Nova versão (COMDEX):
- Tópicos novos: CVS, AntHill e Gump (08/2002).
Download:
- xpjava.zip (slides em PDF) (825 kB)
- exemplos.zip (arquivos-exemplo) (362 kB). Não inclui dependências (veja abaixo).
Ant e JUnit, duas ferramentas open-source, podem ser usadas para implementar
testes de unidade e integração contínua, duas das 12 práticas fundamentais
do XP (eXtreme Programming). Esta palestra mostrará como usar essas duas ferramentas em conjunto
para aumentar a produtividade e qualidade de qualquer projeto baseado em Java, e discutirá
estratégias para implementação de testes de unidade. Serão
exploradas também as ferramentas Cactus - uma extensão do JUnit que permite
testar a integração de componentes Web, CVS - ferramenta open-source para controle de versões, CruiseControl, AntHill e Gump: ferramentas que automatizam o processo de integração contínua.
Duração: 6 horas (1 a 1,5 hora cada bloco)
Público-alvo: desenvolvedores Java
Pré-requisitos: experiência em desenvolvimento Java; conhecimento elementar de aplicações Web para J2EE e XML.
Roteiro
- Por que testar e integrar? Como?
- JUnit: testes de unidade
- Como usar o JUnit
- Como escrever um TestCase
- Integração JUnit e Ant: <junitreport>
- Limitações e dificuldades
- Ant: integração
- Como usar o Apache Ant
- Recursos essenciais: Javac, Mkdir, Copy, Jar...
- Recursos interessantes: CVS, filtros, War, Javadoc, FTP
- Demonstrações
- Cactus: testes de integração
- Como usar o Apache Cactus
- Como escrever um TestCase para um servlet
- Demonstrações
- CVS e ferramentas para integração contínua
- Tutorial CVS
- CruiseControl
- AntHill
- Jakarta Gump
- Demonstrações com CVS
- Conclusões e fontes
Veja também eXtreme Programming (palestra).
Apresentações realizadas: Depto. de Sistemas e Computação da UFPB, Campina Grande, PB (fev/02); Editora Gráficos Burti, São Paulo, SP (fev/02); Sociedade de Usuários Java da SUCESU-SP (fev/02); CESAR - Centro de Estudos e Sistemas Avançados do Recife (mar/02); Centro de Tecnologia da UFSC, Florianópolis, SC (jul/2002); Abaporu Brasil@JavaOne e COMDEX 2002, São Paulo, SP (ago/2002)
Download: arquivos-exemplo (separados) e dependências
1. Arquivos-exemplo (baixe tudo de uma vez em exemplos.zip)
Novos exemplos estão sendo adicionados periodicamente. Exemplos que usam Cactus e HttpUnit foram atualizados. Agradeço a todos que enviaram contribuições (ainda não incluí todas).
- 1) antdemo.zip (4kB): exemplo de um buildfile simples usado para compilar um pacote.
- 2) scriptdemo.zip (2kB): exemplo simples do uso da tarefa <script>. Requer JARs
adicionais (veja abaixo).
- 3) taskdemo.zip (5kB): exemplo simples do uso da tarefa <taskdef> e da criação
de tarefas usando a API do Ant.
- 4) helloejb.zip (8kB): mini-aplicação EJB. Um Ant buildfile é usado para automatizar a criação de um
arquivo EAR que consiste de um EJB JAR, JAR do cliente e arquivo WAR. O arquivo resultante
pode ser implantado em um servidor de aplicações J2EE.
- 5) hellormi.zip (6kB): Mini-aplicação RMI. Um Ant buildfile é usado para compilar todas as
classes, gerar os stubs e skeletons e empacotar o cliente e servidor em JARs distintos.
- 6) taglibdemo.zip (22kB): Uma biblioteca de custom tags JSP é montada (JAR e TLD) como subprojeto.
de um projeto Ant que cria e instala um arquivo WAR contendo a biblioteca, páginas JSP e JavaBeans.
- 7) minied.zip (10kB): Um mini-aplicativo Swing. O buildfile é usado para gerar um JAR executável,
documentação (JavaDoc) e Zips para distribuição.
- 8) junitdemo.zip (6kB): exemplo simples para demonstrar o funcionamento do JUnit e <junitreport>.
- 9) foptask.zip (42kB): projeto que cria duas novas tarefas para o Ant: <fop> e <rtf> que,
respectivamente, transformam documentos XML em PDF e RTF com o auxílio da tarefa <style>
que transforma XML em XSL-FO usando uma folha de estilos XSLT. Este exemplo requer vários
JARs adicionais (veja abaixo).
- 10) cactusdemo.zip (13kB): exemplo para demonstrar o funcionamento do Cactus com o ServletRedirector
e JspRedirector (do livro Java Tools For Extreme Programming). Requer Cactus (veja abaixo). Atualizado para suportar Cactus 1.3.
- 11) strutsdemo.zip (16kB): exemplo para demonstrar o funcionamento do Cactus testando alguns
custom tags populares do Jakarta Struts. Requer Cactus (veja abaixo).
- 12) soundemo.zip (26kB): exemplo para demonstrar a tarefa <sound>. Requer JMF (veja abaixo).
2. Dependências: Para rodar a maior parte dos exemplos, é necessário:
- Ter o Apache Ant instalado (para todos os exemplos). Obtenha a última versão do Ant em
http://jakarta.apache.org/ant/.
- Instalar o junit.jar no Ant e/ou aplicações (veja no README.txt de cada aplicação).
Obtenha o JUnit Framework em http://www.junit.org
Exemplo (2): é preciso copiar para o diretório lib/ da sua instalação de Ant:
Por conveniência, as versões usadas estão empacotadas no ZIP abaixo (somente os JARs):
Exemplo (9): é preciso copiar 5 JARs para o diretório lib/ do
Ant ou para o taskdef/lib da aplicação.
Por conveniência, as versões usadas estão empacotadas no ZIP abaixo (somente os JARs):
Exemplos (10) e (11): é preciso instalar e configurar o Apache Cactus (veja como
no README.txt da aplicação e na palestra). O Cactus pode ser encontrado em:
Exemplo (11): requer o Jakarta Struts (um framework MVC para JSP)
Exemplo (4): requer o J2EE SDK ou j2ee.jar para gerar os componentes.
Exemplos (6), (10) e (11): requerem um servidor Web compatível com o Jakarta-Tomcat.
Exemplo (12): Requer Java Media Framework (talvez você já tenha no seu CLASSPATH. Teste antes. Se não tiver, obtenha-o do site da Sun e copie o jmf.jar para o lib/ do Ant.)