Você está na página 1de 25

Nilseu Padilha

npadilha.faqi.@gmail.com

Java Profissional
Ferramentas de Trabalho

Agenda
Gerenciamento

de Ambiente com

Maven
Controle de Tarefas com Mylyn
Controle de Verso com git/eGit
Testes Unitrios com JUnit

Maven
Gerenciamento

de Build / Projeto

POM.XML
Gerenciamento de Dependncias
Conveno sobre Configurao
Ciclo de vida do projeto

Maven - POM
Coordenadas

do projeto

groupId
artifactId
version
packaging(jar, war, ear, maven-plugin,

)
Project

Info (desenv. site, controle de


verso)
Dependencies
Plugins

Maven O pom.xml
<project>
<modelVersion>4.0.0</modelVersio
n>
<groupId>org.ragnar</groupId>
<artifactId>dcoosample</artifactId>
<version>1.0SNAPSHOT</version>
<packaging>jar</packaging>

Maven Ciclo de Vida

validate
generate-sources
process-resources
compile
test-compile
test
package
install
verify
deploy

A execuo do
maven precisa e
roda todas as
anteriores:
mvn compile

ou um goal de
algum plugin:
mvn jetty:run
mvn scm:update

Maven Plugins comuns

maven-clean-plugin
maven-compiler-plugin
maven-jar-plugin
maven-war-plugin
maven-dependency-plugin
maven-release-plugin
maven-source-plugin
maven-surefire-plugin
maven-ant-plugin
maven-archetype-plugin
maven-checkstyle-plugin
maven-pmd-plugin

Maven - Dependncias
Baseado

em groupId, artifactId, version


Suporta dependncias transitivas
Trabalha orientado a um escopo:
compile
test
provided
runtime
system

Baixado

de locais pblicos
Armazenado no repositrio local
($USER_HOME/.m2/repository)

Maven verses de
dependncias
<major>.<minor>.<revision>

([ -<qualifier> ] | [ -<build> ])
4.1.6
4.1.6-SNAPSHOT
[4.1.6,5)
Se a mesma dependncia for
includa duas vezes (como???), a
maior ganha

Maven IDEs
Suportado

em todas as relevantes
Pom.xml gera arquivos especficos
de IDE
mvn eclipse:eclipse
mvn idea:idea

Maven Gerenciadores de
Repositrios
Proxies

entre a organizao e os
repositrios pblicos
Destino dos artefatos gerados da
organizao
Sonatype Nexus
Maven Archiva
Artifactory

Mylyn
Gerenciamento
Foco
Integrao

de tarefas

com ferramentas de
Gerenciamento de Projeto
Integrao com controle de verso

Git Controle de
Verses
Git

repositrio de controle de
verses distribudo
eGit plugin do eclipse
TortoiseGit integrao com o
Windows Explorer

Junit Programando
SEM Testes
Escrita

de MUITO CDIGO que um


dia pra de funcionar
Corrigir bugs fcil, mas ach-los:
Horas no debbuger
Horas no browser e no log

Correes

quebram outras partes do

cdigo
O bug pode reaparecer

Junit O que Unit Test


Um

Teste unitrio um
procedimento automatizado e auto
checado que valida o
funcionamento um mdulo (Classe!)
O procedimento escreve testes para
todos os mtodos e funes do
mdulo
A classe sob teste pode ser testada
ISOLADAMENTE

Junit Regras do Teste


Unitrio
No

falar com o Banco de Dados


No se comunicar com a rede
No interagir com o file system
No pode depender de outros testes
No deve editar arquivos de
configurao
No deve testar outras classes

Junit - Benefcios do Teste


Unitrio
Isola

cada parte do program e checa


partes individuais do trabalho
Contrato escrito do que uma parte
do cdigo deve satisfazer
Permite a refatorao do teste e a
certeza de que ainda funciona
(TESTE DE REGRESSO)

Junit - Refatorao
Refatorao:
Uma mudana feita na estrutura interna

do software para faz-lo mais facilmente


inteligvel e mais barato de modificar
sem mudar seu comportamento
observvel

Junit Benefcios do Teste


Unitrio
Simplifica

a integrao
Prov documentao
Melhora a qualidade do cdigo

Junit Benefcios do Teste


Unitrio
Separao

da interface da
Implementao
Uma classe pode ter alguns

colaboradores
Testes Unitrios no devem ir for a de
sua classe
Pode-se utilizar programao orientada a
interface e um Mock Object para
manter o acoplamento baixo do sistema.

Junit
Prtica

Junit Boas Prticas


Dar

nomes significativos aos testes

Usar deve ao invs de test

No

testar classes, e sim seu


comportamento
Dar nomes significativos s classes

Estruturar bem os testes


Testes so entregveis tambm!!!

Junit Boas Prticas (RightBICEP)


Right

testes esto corretos?


B BOUNDARY limites esto
corretos?
I INVERSE relacionamento inverso
correto?
C- CROSS-CHECK podemos usar
outra validao?
E ERROR CONDITIONS podemos
forar erros?
P PERFORMANCE Performance

Junit Boas Prticas


(CORRECT)
Conformance

conformidade o valor est


conforme formato esperado?
Ordering ordenao o conjunto de valores est
na ordem correta?
Range faixa o valor est dentro de um mnimo e
um mximo esperado?
Reference Referncia o cdigo referncia qualquer
coisa for a de seu controle?
Existence Existncia o valor existe (null, zero)
Cardinality Cardinalidade h valores suficientes?
(um, nenhum, mais de um)
Time Tempo Est tudo ocorrendo em tempo, em
ordem e a tempo?

Resumo de ferramentas
Eclipse
http://www.eclipse.org

M2e
http://www.eclipse.org/m2e/download/

Maven
https://maven.apache.org/

Junit
http://junit.org/

eGit
http://www.eclipse.org/egit/download/

Você também pode gostar