Por que eu devo ler este artigo:O TDD serve para qualquer equipe ou programador que necessite de meios para lidar com problemas complexos durante o desenvolvimento de uma aplicação. O Desenvolvimento Guiado por Testes (TDD) é útil para auxiliar o programador a focar seus esforços em partes menores do sistema e, a partir daí construir o todo.

Trabalhar em unidades menores, através de testes, reduz a complexidade e permite o desenvolvimento de uma aplicação “de dentro para fora” pois, o desenvolvedor trabalha diretamente no modelo, além de favorecer o baixo acoplamento e a alta coesão dos componentes criados.

TDD na prática

Lidar com a complexidade de sistemas é um constante desafio para os desenvolvedores. O TDD oferece um mecanismo de auxílio no combate à complexidade. Através de testes de pequenas unidades da aplicação o desenvolvedor pode focar seus esforços em funcionalidades específicas, isolando-se do resto. A técnica também permite trabalhar diretamente no modelo, sem a necessidade de se pensar nas camadas mais externas da aplicação.

Este artigo mostra o desenvolvimento de uma aplicação em Java, com os frameworks Struts 1.3 e JPA (fora de um container Java EE), utilizando a técnica de Desenvolvimento Guiado por Testes (TDD).

A máxima da Engenharia de Software para que equipes possam lidar com sistemas de grande porte e alta complexidade é: “Dividir para conquistar”. Mas como o desenvolvedor pode aplicar na prática este mandamento? A resposta é o TDD.

Criar um design de projeto que reflita o domínio do negócio do cliente ajuda a integrar os envolvidos, pois facilita a comunicação entre as partes. Os patterns oferecidos por metodologias como o DDD (Domain-Driven Design) auxiliam na prática correta dos fundamentos da orientação a objetos, de uma maneira que a equipe consiga extrair o máximo das vantagens oferecidas pelo paradigma. Além disso, permite a criação de um modelo que concentre toda a complexidade referente às regras de negócio.

O Test-Driven Development (TDD), aparece como uma ferramenta de auxílio ao desenvolvedor, só que de forma mais específica, isto é, em nível de implementação de funcionalidades. Pois no fim das contas, quem combate a complexidade na linha de frente, é o profissional que escreve código.

A técnica permite que desenvolvedores, através de testes e fatorações, foquem seus esforços em pequenas partes do sistema, isolando-se do todo. Por analogia, quanto maior o problema, menor deve ser o terreno que cada teste deve abranger.

Este artigo tem o objetivo de apresentar a criação de um sistema em Java, utilizando Struts 1.3, Tomcat 6 e a API de persistência (JPA – com Hibernate 3), através da técnica de Test-Driven Development de forma prática. Para a criação dos testes, utilizaremos o framework JUnit 4.

Sendo assim, precisamos de um cenário para basear o estudo da técnica e das ferramentas que serão utilizadas. É o que veremos a seguir.

Sistema de imóveis

Uma imobiliária quer informatizar as atividades relacionadas aos imóveis de seus clientes. Com este objetivo, contratou uma empresa de desenvolvimento de software para criar um sistema de gerenciamento de imóveis.

O sistema deve permitir operações sobre os clientes da imobiliária e seus respectivos imóveis, situados nos diversos estados brasileiros. Alguns dados pertinentes aos clientes são: nome, CPF e estado de origem. Os imóveis devem ser identificados inequivocamente através de um código alfanumérico e devem conter informações sobre o valor e o estado em que estão localizados.

Após inúmeras conversas entre representantes da empresa e equipe de desenvolvimento, os projetistas modelaram o sistema como mostra a Figura 1.

Diagrama de Classes
Figura 1. Diagrama de Classes

Configurando o ambiente

Antes de iniciarmos o desenvolvimento do sistema e os trabalhos com testes, precisamos configurar o ambiente proposto para o objetivo do nosso estudo. Além de prepará-lo para suportar testes através do framework JUnit.

Utilizaremos a IDE Eclipse Helios neste artigo. A partir dela, faremos as configurações do projeto. Esta versão da ferramenta dá suporte à criação de projetos integrados com o JUnit e com a Java Persistence API (JPA).

A primeira coisa a ser feita é criar um novo Dynamic Web Project. Para isso, basta ir em File > New > Other... e selecionar a opção desejada nos wizards disponíveis (dentro da pasta Web), como mostra a Figura 2.

Criando um Dynamic Web Project
Figura 2. Criando um Dynamic Web Project

Clique em Next. A tela apresentada (veja a Figura 3) permite a configuração do projeto que estamos criando. Para este artigo, utilizaremos o Apache Tomcat 6 como Target runtime. O quadro “Tomcat no Eclipse” mostra como integrar o deploy de aplicações feitas no Eclipse com o Tomcat local de sua máquina.

Tomcat no Eclipse:

Para podermos trabalhar de forma eficiente, com aplicações web desenvolvidas no Eclipse e que utilizam o Tomcat, precisamos integrar as duas ferramentas para permitir o deploy direto pela IDE.

Fazer deploy significa publicar os componentes prontos, de sua aplicação, em um servidor. Desta forma, vamos configurar o Eclipse para automatizar este processo. Para isso, é necessário ter o Tomcat instalado em sua máquina.

Assumindo que você tem o Tomcat instalado, vamos começar selecionando a aba Servers no Eclipse, como mostra a Figura Q1.

Aba Servers do Eclipse
Figura Q1. Aba Servers do Eclipse

Agora clique com o botão direito na área branca e selecione a opção New > Server. A tela apresentada permite a configuração do servidor. A Figura Q2 mostra as configurações necessárias.

Configurações do servidor
Figura Q2. Configurações do servidor

Ao clicar em Next, você poderá escolher que projetos terão seus deploys integrados ao Tomcat. Clique em Finish. O servidor está criado e deve aparecer na aba Servers.

O último passo é definir em que pasta os projetos serão publicados. Para isso, clique duas vezes no nome do servidor. A tela apresentada mostra diversas opções de configurações. Para o nosso caso, vamos alterar as configurações de acordo com a Figura Q3.

Configurando o caminho do deploy
Figura Q3. Configurando o caminho do deploy

O Server path deve apontar para a pasta de instalação do Tomcat em sua máquina, enquanto o Deploy path deve apontar para a pasta webapps, também do Tomcat.

Após seguir estes passos, seu servidor estará pronto para uso. Você pode controlá-lo através da aba Servers e sempre que inicializá-lo, todas as aplicações associadas a ele, serão publicadas.

Configurando o projeto
Figura 3. Configurando o projeto

Ainda com base na Figura 3, adicionaremos o suporte à JPA. Para isso, clique no botão Modify..., que fica dentro da área Configuration. Na janela apresentada, como mostra a Figura 4, selecione a opção JPA e clique em OK. Desta forma, o projeto criado estará pronto para trabalhar com a API de persistência.

Customizando as facets da aplicação
Figura 4. Customizando as facets da aplicação

Obedecidos estes passos, podemos clicar em Finish. Temos então um projeto criado, integrado ao Tomcat e com suporte a JPA. Precisamos ainda, adicionar o framework de testes JUnit. Para isso, basta clicar com o botão direito no nome projeto, que se encontra no Package Explorer, e selecionar a opção Build Path ...

Quer ler esse conteúdo completo? Tenha acesso completo