Finalmente na empresa onde trabalho, teremos a chance de talves iniciar um projeto em Java, sair um pouco do PHP e ir para JSP/Servlet.
Meu superior está lendo um livro sobre XP (Xtreme Programming) e achou muito interessante a idéia do desenvolvimento em cima dos testes, ou seja, primeiro desenvolver os testes e depois as funcionalidades.
Como na empresa eu sou uma das pessoas que sempre estão estudando Java, ele veio me pergunta como funciona isso em Java. Mostrei pra ele o Eclipse + JUnit, e ele ficou impressionado, pois primeiro você monta os testes e depois o Eclipse cria as interfaces da classe apenas em poucos cliques com o mouse. Mas eu mostrei um teste simples, igual o do tutorial do GUJ (eu conheci o JUnit pelo tutorial do GUJ, obrigado GUJ :).
Agora segunda feira irei apresentar para a equipe duas ferramentas, o hibernate como camada de persistencia de objetos e o JUnit.
O Hibernate eu já tenho um exemplo legal aqui, agora a dúvida é sobre o JUnit.
Como vocês usam o JUnit para testar funcionalidades?
Por exemplo:
Se eu quero testar um método que faz uma soma… eu passo 1 parametro, outro e vejo o resultado. Mas gostaria de outros tipos de testes, por exemplo, como eu vou testar se meu DAO está gravando certo as informações? como testar se um objeto está influenciando o outro certo e etc?..
Outra dúvida é a seguinte. Vamos supor que tenho 3 classes
[list]
Classe1
Classe2
Classe3
[/list]
eu crio 3 classes do JUnit
[list]
TestClasse1
TestClasse2
TestClasse3
[/list]
Se eu rodar as 3, uma de cada vez normal…
mas eu quero rodar as 3 na sequencia… pois no futuro do projeto, irei ter várias classes e vários testes…
Como você fazem pra rodar tudo de uma vez? existe algum “segredo”, ou vocês criam tipo uma classe Principal, que nela chama uma classe por vez para testar?
desculpem o tópico grande, mas essas informações são valiosas para mim começar um projeto em Java de verdade :lol:
Alguns toques: se vc vai fazer teste unitario de um DAO ou qualquer outro tipo de objeto que se comunique com coisas fora do seu sistema, use mock objects, ou vc tá ferrado esperando pelo banco de dados. http://www.mockobjects.org
Mais uma: se vc depende de uma sequencia certa de execucao pra que os seus testes saiam direito, vc esta complicando demais a coisa - o ideal e que cada testXXX() tenha seu ambiente inteiro criado pelo setUp() e destruido pelo tearDown(). Assim, voce nao corre o risco de um teste interferir no outro. Alias, eh por isso que ter variaveis estaticas em objetos que vc está testando é um saco
Sobre rodar um teste gigante, envolvendo mais de um TestCase, vc pode criar um TestSuite, e fazer a coisa rodar dali. Ou, no Ant, botar pra rodar todos os testes de um determinado pacote, q eh bem mais produtivo (vc nao vai querer ficar rodando zilhoes de testes toda hora de dentro do Eclipse, vc so vai querer ver o que ta acontecendo com a classe que vc esta trabalhando no momento ;))
Acho que por enquanto eh soh… qqer coisa, da um grito ae
vou dar uma estudada nesse tal de mock objects, quem sabe seja mais uma coisa para mim apresentar para meu superior
Sobre os zilhões de testes, você entendeu certinho, no momento que eu estiver implementando eu vou querer rodar apenas o test da classe atual, mas quando eu for rodar um test completo, quando for integrar as classes por exemplo, ae eu preciso rodar todos os zilhões de testes de uma só vez.
Vou tb dar uma procurada no Ant de como rodar uma classe.
Vou dar uma estudada e qualquer coisa eu grito para o pessoal do GUJ
Bom, o pessoal da empresa gostou muito do JUnit e o Hiberante, mas eu não usei com os mock objects (que por sinal o link está errado, é .com invés de .org :)).
Hoje comecei a estudar esse tal de mock objects, e nossa, a documentação do site deles está horrível!!!
estava seguindo o tutorial deles e os objetos que eles usam (por exemplo MockConnection), está tudo deprecated, tentei outros métodos como MockConnection2, mas está faltando alguns métodos, como no tutorial diz sobre o MockConnection.setExpectedPreparedStatementString (eu achei um método addPreparedStatementString, e tb estava deprecated).
Por fim não consegui nem rodar os arquivos do tutorial deles, consequentemente não sei usar o mock objects.
Você tem algum exemplo, o básico possível, pra mim ver seu funcionamento?
se sim pode mandar pro meu email fazendo favor?
alex.lopes2000@bol.com.br