Sunteți pe pagina 1din 45

Desenvolvimento gil com Java

Redmine, Eclipse, SVN e JUnit


Fernando Lozano

Aula 1

2/45

Objetivo

Demonstrar o uso do ambiente de FSW (Fbrica de Software) que ser utilizado ao longo deste curso

Obter especificaes via Redmine Trabalhar no Eclipse com projetos vinculados ao Subversion (SVN) Utilizar testes JUnit para validar o cdigo Verificar a configurao do aceite do cdigo, gerada pelo ambiente de integrao contnua, via Redmine

Exercitar trabalho em equipe via SVN

3/45

J est com o seu ambiente de trabalho pronto para usar? JDK e Ant no prompt de comandos Eclipse com suporte a Subversion VOC FOI AVISADO NA AMBIENTAO ;-)

4/45

Testando o Ambiente: JDK na linha de comando

Abra o prompt de comandos do seu sistema operacional e execute:


$ java -version $ javac -version

A resposta em ambos os casos tem que ser 1.6.0_xx Se no funcionar, ou o seu PATH est errado, ou voc instalou um JRE (em vez de um JDK) ou voc deve baixar e instalar uma nova verso do Java Procure resolver sem atrapalhar o fluxo da aula sncrona!

5/45

Testando o Ambiente: Ant na linha de comando

Abra o prompt de comandos do seu sistema operacional e execute:


$ ant -version

A resposta tem que ser 1.6.x ou superior


$ ant -diagnostics

Deve ir at o final sem erros Se no funcionar, ou o seu PATH est errado, ou voc deve baixar e instalar uma nova verso do Ant Pode deixar para resolver depois da aula sncrona, no vamos usar o ant hoje.

6/45

Testando o Ambiente: Eclipse

Inicie o Eclipse usando o cone / atalho no seu desktop, ou se preferir a linha de comando Entre no menu Ajuda > Sobre Plataforma Eclipse

Deve responder com a verso 3.5.0 ou mais recente Clique no primeiro cone com o logotipo do Eclipse, com tooltip eclipse.org Procure na janela o recurso Ferramentas de Desenvolvimento Java (org.eclipse.jdt)

Se no aparecer, voc instalou um Eclipse que no est habilitado para desenvolvimento Java

7/45

Testando o Ambiente: Eclipse e Subversion

Ainda no menu Ajuda > Sobre Plataforma Eclipse

Clique no cone com fundo azul claro e um S branco, com tooltip tigris.org A janela deve exibir pelo menos trs recursos: Subversion Client Adapter, SVN Team Provider Core e SVNKit Client Adapter

Se faltar um deles, seu Eclipse no est configurado para integrao com o Subversion, consulte as instrues para instalao do IDE apresentados no bloco INFRAESTRUTURA JAVA no final da pgina deste curso no Netclass

8/45

Testando o Ambiente: Eclipse e Subversion com SVNKit

Ainda no menu Janelas > Preferncias


Entre no item Equipe > SVN Confirme que SVN Interface esteja selecionado como SVNKit (Pure Java)

A outra opo pode exigir software adicional instalado em seu computador e no ser utilizada neste curso

9/45

Prontos para comear... Voc leu, na seo Contedo Obrigatrio, a descrio do exemplo do Jogo da Velha?

10/45

Qual a minha tarefa?

Acesse o Redmine pela URL:

ID da turma no Netclass em minsculas

http://redmine.4linux.com.br/projects/daj001/issues? query_id=3

Esta URL cai direto dentro do projeto correspondente a este curso, e filtrando para exibir apenas as tarefas atribudas ao prprio aluno O login (seu e-mail) e senha devem ser os mesmos usados para o Netclass Salve a consulta como um marcador em seu navegador

11/45

Jogo da Velha

Vamos atacar neste momento a tarefa chamada apenas Velha. Conforme a descrio no Redmine, ela consiste em criar uma interface com o usurio grfica para um programa de Jogo da Velha

Este no um curso sobre GUI, mas assim fica um exemplo mais interessante ;-)

O primeiro passo obter do Subversion (SVN) a situao atual do cdigo

12/45

Repositrio SVN x rea de Trabalho Eclipse

O cdigo oficial da aplicao fica no repositrio do SCV (sistema de controle de verses) no caso o Subversion O cdigo na rea de Trabalho do Eclipse apenas uma cpia de trabalho, que o programador pode alterar (e at descartar) em interferir com outros membros da equipe Quando o programador considerar que fez mudanas (na sua cpia de trabalho) que sero teis para o restante da equipe, ele deve confirmar estas mudanas no repositrio

13/45

Check-out do esqueleto inicial

Inicie o seu IDE Eclipse Entre na perspectiva Java (se no estiver) Selecione no menu Arquivo a opo Novo > Outras... Role at encontrar a categoria SVN e a expanda Selecione Checkout projets from SVN e clique em Avanar Agora sim iremos conectar ao servidor Subversion do ambiente de EaD da 4Linux!

14/45

Conectando a um repositrio SVN

Selecione a opo Create a new repository location e clique Avanar Digite como URL: Clique Avanar Na tela seguinte, selecione a pasta (folder) Velha

https://svn.4linux.com.br/svn/DAJ001/aluno/seu_email

ID da turma no Netclass em MAISCULAS

Note que o nome da pasta o mesmo nome da tarefa no Redmine!

Clique em Concluir e o projeto ser criado no seu espao de trabalho do IDE

15/45

O Projeto Velha

Expanda na pasta src o pacote br.com.fourlinux.aula01 Examine as classes PartidaVelha e TabuleiroVelha e se necessrio reveja a descrio das duas dentro da tarefa no Redmine Elas fornecem toda a lgica para o jogo, falta apenas a interface com o usurio Voc vai cri-la, usando um modelo j pronto dentro da aula no Netclass

16/45

Criando a classe UIJogoDaVelha

Crie uma nova classe no mesmo pacote que as classes j existentes no projeto: Selecione no Explorador de Pacotes o pacote br.com.fourlinux.java474.aula01 dentro da pasta src Clique com o boto direito e escolha Novo > Classe Fornea como nome da classe IUJogoDaVelha e clique em Concluir Baixe o cdigo da classe no Netclass e copie para a classe recm-criada

17/45

Novas classes x Subversion

Observe que a nova classe tem um sinal de interrogao junto ao seu cone no Explorador de Pacotes As demais classes do projeto tem um cone de tambor que indica que elas esto sincronizadas em relao ao repositrio de cdigo, no nosso caso o Subversion

18/45

Nova classe no projeto, falta adicionar ao repositrio


Classe no existe no repositrio ?

Projeto foi alterado em relao ao repositrio *

Classe sincronizada com o repositrio tambor

19/45

Aferindo a situao do projeto

Verifique que o cdigo da nova classe esteja completo e salvo, e que no aparea nenhum cone de x vermelho, que indicaria erro de compilao Selecione no Explorador de Pacotes a classe IUJogoDaVelha, dentro do pacote br.com.fourlinux.java474.aula01 na pasta src Execute a classe Brinque com ela. Observe que os jogadores se alternam conforme esperado, mas o jogo no encerrado nem na vitria nem no empate, e no possvel iniciar um novo jogo

20/45

Deveria poder iniciar uma nova partida

Exemplo da aplicao incompleta


Mas est aguardando a prxima jogada

O X j ganhou na diagonal

21/45

Voc consegue encontrar o problema?

Procure na classe PartidaVelha Afinal, a especificao (no Redmine) afirma que ela a responsvel pelo andamento do jogo

O mtodo isJogoTerminado est vazio! Parece que a lgica de negcios do Jogo da Velha ainda no est completa... Mas uma coisa de cada vez. Primeiro, salvar no repositrio o cdigo da interface com o usurio

22/45

Acrescentando a nova classe no Repositrio

Clique com o boto direito na classe IUJogoDaVelha e selecione Equipe > Add to Version Control Observe que agora o cone da classe inclui um cone de + Ele avisa que a nova classe foi marcada para adio ao repositrio Mas a adio s acontecer de verdade quando forem confirmadas para o repositrio as alteraes na cpia de trabalho

23/45

Classe adicionada ao repositrio


Projeto continua sujo *

cone de +

24/45

Salvando as Mudanas no SVN

Clique com o boto direito no projeto e selecione Equipe > Commit Digite como comentrio (comment for the commit operation) um texto que descreva as alteraes sendo salvas no SVN

Ex: implementada a IU Swing

Observe que o cone de sujo (asterisco) desapareceu do projeto

25/45

Adio da classe confirmada no repositrio


Projeto no est mais sujo

Nova classe sincronizada com o repositrio tambor

26/45

Trabalho em Equipe

Em um sistema real, vrios programadores iro trabalhar ao mesmo tempo em partes diferentes da aplicao Ento vamos simular isso. O instrutor ir acrescentar ao repositrio o cdigo que falta na classe PartidaVelha Depois os alunos iro atualizar suas cpias de trabalho, trazendo modificaes para a rea de trabalho do Eclipse Enquanto um programador trabalha na interface com o usurio, outro trabalha na lgica de negcios!

27/45

Faltou na Aula OnLine?

Se voc no pde acompanhar este roteiro durante a aula sncrona, voc pode continuar sozinho, sem executar o prximo passo (fazer o Update do HEAD com o SVN) Ou ento, voc pode dar uma parada, pedir ao instrutor que faa a atualizao no seu projeto, e prosseguir mais tarde.

28/45

Trazendo alteraes do Subversion para o Eclipse

Clique com o boto direito no cone do projeto (Velha) no Explorador de Pacotes Selecione Equipe > Update to HEAD Verifique o novo contedo do mtodo isJogoTerminado Depois execute novamente a classe UIJogoDaVelha Desta vez o jogo indica corretamente a vitria do jogador X ou o empate:deu velha (NO tente corrigir pra indicar tambm a vitria do O! Faremos isso mais adiante)

29/45

Agora sim, fim de jogo


possvel iniciar nova partida A vitria do jogador foi Reconhecida pelo programa

No possvel fazer novas jogadas

30/45

Testes interativos no so produtivos!

Voc experimentou a aplicao executando-a como se fosse um usurio, mas isto seria sempre vivel em um projeto real?

Pode ser gasto um tempo considervel operando a aplicao at atingir o ponto desejado O programador que escreve a lgica tem que esperar pelo programador que escreve as telas Na hora de testar, voc vai lembrar de refazer sempre todos os passos, e testar sempre todas as possibilidades?

31/45

Desvantagens dos testes manuais

Depender da interface com o usurio, para testar, limita a produtividade do projeto, pois limita o paralelismo entre os programadores! Programar as telas junto com a lgica acaba gerando cdigo fortemente acoplado

Alterar as telas altera a lgica e vice-versa Pode ficar complicado adaptar o mesmo programa a diferentes dispositivos, ex: PC e Smartphone

32/45

Testes automatizados

prtica recomendada hoje o uso de testes automatizados, e a aplicao j traz estes testes prontos para uso Expanda o pacote br.com.fourlinux.java474.aula01 na pasta test Selecione e execute a classe AllTests Observe que o Eclipse reconhece esta classe como um teste JUnit e exibe graficamente o resultado da execuo dos testes

33/45

Testes falhos

Observe que a maioria dos testes teve sucesso (cone de rubrica verde) Mas o teste que verifica a vitria do O falha

Vamos fingir que encontramos um bug na aplicao Alguns alunos j devero ter notado este bug executando o jogo

Voc conseguir entender a lgica dos testes, mesmo que nunca tenha visto JUnit antes E tambm ser capaz de deduzir a correo

34/45

Selecione o teste falho

JUnit no Eclipse

Clique duplo na linha da falha

O mtodo isJogoTerminado no retornou o resultado esperado

35/45

Completando a aplicao

Eis a correo para o mtodo isJogoTerminado na classe PartidaVelha:


public boolean isJogoTerminado() { return tabuleiro.isVitoriaJogadorO() || tabuleiro.isVitoriaJogadorX() || tabuleiro.isDeuVelha(); }

Agora, nova execuo dos testes JUnit no deve indicar nenhum teste falho!

36/45

Cpia de trabalho suja

Observe que o cone da classe PartidaVelha e tambm o do projeto mudam para indicar que eles esto alterados em relao ao repositrio Ento temos que salvar as alteraes, isto , nossa correo de bug, no repositrio

37/45

Arquivo alterado na cpia de trabalho

Classe alterada em relao ao repositrio *

38/45

Salvando alteraes no repositrio

Clique com o boto direito no projeto e selecione Equipe > Commit Digite como comentrio (comment for the commit operation) um texto que descreva as alteraes sendo salvas no SVN

Ex: corrigida a deteco de fim de jogo, funciona tambm na vitria do O

Observe que o cone de sujo desapareceu do projeto

39/45

Confirmando a concluso da tarefa no Redmine

Volte para a sua tarefa no Redmine e faa o reload da pgina no seu navegador Ela ter sido acrescida de um comentrio gerado pelo sistema de Integrao Continua, informando a ocorrncia de um commit no repositrio e o resultado dos testes Se os testes foram OK (Testada Ok) a tarefa est concluda Os testes JUnit so executados pelo servidor em resposta ao commit, e um relatrio HTML gerado e linkado tarefa no Redmine

40/45

Tarefa atualizada no Redmine


Primeiro commit do aluno, nova classe

Segundo commit do aluno, bug corrigido

41/45

Relatrio de Erros no Redmine (siga o link)

Clique no link para ver a pgina ao lado

42/45

Relatrio de testes com sucesso

43/45

Roteiro para os Exerccios Obrigatrios

Especificao no Redmine Baixar do Subversion Fazer funcionar Commit no Subversion Confirmar Ok no redmine Geralmente no ser necessrio fazer update nem adicionar / remover arquivos do projeto Eclipse ou cpia de trabalho

44/45

Exerccio Obrigatrio

Nesta aula no teremos um exerccio obrigatrio O exemplo Velha valer como exerccio obrigatrio, portanto quem faltou aula sncrona (ou no conseguiu completar o roteiro durante a aula) deve se certificar de PELO MENOS fazer o commit de um projeto Velha que passe em todos os testes Nas prximas aulas, o exerccio obrigatrio poder ser uma tarefa / programa diferente do utilizado durante a aula sncrona

45/45

FIM DA AULA 01

S-ar putea să vă placă și