Usar -Dmaven.test.skip=true é pecado!
Certa vez estava numa palestra do Vinicius da Globalcode, e ele disse brincando a seguinte frase: “O JMetter é muito louco! Não sei como alguém faz um negócio tão bom como esse e
distribui gratuitamente.”. Eu diria o mesmo a respeito do Maven. O Maven é uma ferramente fantastica e indispensável para todo projeto Java.
Entre as muitas features do Maven que eu gosto, uma das minhas preferidas é que sempre que você precisa compilar o projeto para gerar os seus ears, jars, sars etc, ele executa automaticamente
todos os testes unitários do projeto, e se algum teste não passar ele não compila o projeto. Acho esse recurso formidável para manter a qualidade do projeto.
Porém, infelizmente existe o parâmetro -Dmaven.test.skip=true, que se você passa ele, os testes não são executados. Agora imagine a seguinte situação: “O sprint está aos 45 do segundo tempo, você
precisa gerar o ear do projeto pra fechar o sprint e mostrar pro Product Owner, dai você manda o Maven compilar o projeto e os testes unitários não passam” O que fazer nesta situação? Taca o “Skip Test”
lá e vamos embora certo?
Ao menos na minha opinião, ERRADISSIMO. Neste caso, é sprint NOT DONE e acabou. O código não está apto para ir para produção, afinal, dizem os mais críticos que código não testado é lixo. Eu não tenho
uma opinião tão rígida, mas concordo que é muito arriscado colocar um código em produção sem testa-lo, ainda mais se você escreveu testes pra esse código, e os testes não estão passando.
Usar -Dmaven.test.skip=true é tentador. Eu mesmo já usei várias vezes, sempre com o pensamento que “Ah, o código tá certo, precisa só arrumar os testes mas depois quando tiver tempo eu faço isso”. Hoje,
com mais maturidade eu vejo que isso é um erro feio, e eu aboli completamente este parâmetro da minha vida. Finjo que ele não existe, e tenho até vontade de recompilar o Maven para arrancar ele de vez, para
não correr riscos de ter recaidas. Hehehe
Fica aqui então o recado deste post, se você não conhecia esse parâmetro macabro, continue sem conhecer, se você conhecia mas não usa, excelente, se você conhecia e ainda usa, esta na hora de mudar
a sua mente, deixar de apelar, e começar a testar o código direito.
Um abraço e até a próxima.
October 31st, 2008 at 1:58 pm
Concordo 100% em gênero número e grau!
November 1st, 2008 at 8:50 pm
Ha também o parâmetro -fn (fail never) esse ai o teste da errado mas mesmo assim ele cria o build.
November 14th, 2008 at 1:05 pm
Nossa, adoro ler seu blog sabia!
Embora eu não seja assim tão tech quanto você adoro ler o que escreve. E fico super feliz quando você fala sobre algo que conheço, como o JMeter por exemplo… mas como não sou desenvolvedora não conheço o Maven.
Por outro lado, to tentando aprender Java pra melhorar o meu trabalho, mesmo sem ser programadora. Já aprendi a usar DAO, e agora vou aprender Hibernate…
Bom, mas queria dizer que concordo com a parte de que pular testes não é legal. E que eu não deixo nada ir pra produção sem passar pelo teste. Não adianta nada adotar a filosofia do depois eu arrumo, se não você terá mil coisas pra arrumar depois. É melhor ter uma primeira versão certinha, e fazer melhorias posteriormente e não correções!
Beijinhos Amigão
Saudades de você!