Rcov with segfault bug patched
Rcov are hurting many people because of a segfault when used with rspec. Fortunately Tom Copeland wrote a patch last week. I patched it against rcov and put on GitHub. You can install it as a gem doing like this:
$ gem sources -a http://gems.github.com (you only have to do this once)
$ sudo gem install mergulhao-rcov
Someone knows how to make GitHub recognizes my README.markdown file?
12 comentários : 29.08.2008 01:28 AM
Analizando cobertura dos testes com Rcov
Até o momento considero um sucesso a minha adesão ao TDD no desenvolvimento com Rails. Em apenas dois dias os testes automatizados encontraram bugs que possivelmente passariam desapercebidos e já escrevi novos testes para cobrir situações inicialmente não previstas, mas que mostraram sua cara nos testes que já estavam escritos.
Após algumas horas de testes e programação finalizei a primeira etapa de codificação do que será o novo sistema de inscrições do Fórum de Software Livre do Rio de Janeiro desse ano, que ocorrerá em outubro. Foi todo um período de codificação em que não encostei em html/css, mas apenas na codificação dos testes e na lógica dos controladores e modelos.
Para validar todo o trabalho é necessário verificar a cobertura dos testes. Assim podemos descobrir se alguma linha de código passou sem ser testada. Pegando emprestada a idéia do pessoal da ImproveIt, instalei o rcov no Ubuntu:
sudo apt-get install rcov
Foi acrescentado um rake task para automatizar o processo de geração do relatório. Gerado o arquivo /lib/tasks/rcov.rake com o conteúdo(levemente modificado do original da ImproveIt):
require 'rake/clean'
RCOV_OUT = "doc/coverage"
EXCLUDE = "-x /site_ruby/"
CLOBBER.include(RCOV_OUT)
RCOV = "rcov --no-color"
task :coverage_units do
sh "find test/unit -name '*.rb' | xargs #{RCOV} #{EXCLUDE} --rails --output #{RCOV_OUT}/units"
end
task :coverage_functional do
sh "find test/functional -name '*.rb' | xargs #{RCOV} #{EXCLUDE} --rails --output #{RCOV_OUT}/functionals"
end
task :coverage_all do
sh "find test/* -name '*.rb' | xargs #{RCOV} #{EXCLUDE} --rails --output #{RCOV_OUT}"
end
task :rcov => [:coverage_all]
Agora basta entrar no diretório do seu projeto em Rails e digitar:
rake rcov
Será gerado dentro do diretório /doc/coverage o relatório de cobertura dos testes. E não é eu fui bem pra minha surpresa? Resultado: 100% testado! Que venham os próximos testes!
0 comentários : 01.08.2007 02:28 AM
Meu primeiro TDD
A um mês aproximadamente estudo Extreme Programming e suas práticas. Das práticas que estão relacionadas à programação em si, o desenvolvimento guiado pelos testes é sem dúvida aquela que causa mais impacto em quem está habituado ao “desenvolvimento tradicional”. Estou convencido de que a utilização dessa prática é base para um software de qualidade, livre de bugs. Diante disso resolvi começar meu primeiro projeto usando TDD - Test Driven Development. A plataforma: Rails.
O desenvolvimento guiado por testes ainda não é uma prática muito comum, e na internet achar informação útil também não é tão simples, mesmo tendo o Rails um framework completo de testes embutido. Resolvi comprar o screencast sobre TDD do Peepcode. Além do screencast, o pacote também contém todo o código desenvolvido e alguns plugins. Então se você está começando agora com TDD e Rails vão algumas dicas.
autotest
Esse é essencial. para instalar como um gem:
sudo gem install ZenTest
Dentro do diretório do seu projeto Rails digite:
autotest
Ele fica monitorando quando algum arquivo é alterado e roda o teste necessário, se algum dos testes falha pode-se ver na mesma hora. Basta deixá-lo rodando num terminal a parte de forma que se possa colocá-lo em foreground com um Alt+Tab ou coisa assim.
O desenvolvimento fica bem dinâmico com ele. Você escreve o teste, escreve a funcionalidade e ao salvar o arquivo já está rodando no terminal o teste e você descobre na hora se tá ok ou não.
redgreen
Esse aqui é bom pois colore a saída de texto dos testes. Se algum teste falha ele mostra em vermelho. Se o teste passa ele exibe em verde, então identifica-se visualmente sem precisar ler de fato o retorno na tela.
sudo gem install redgreen
E acrescentar no fim arquivo config/environments/test.rb a linha:
require 'redgreen'
topfunky power tools
É um plugin muito legal pro Rails, que adiciona alguns atalhos para tasks de teste e também adiciona vários métodos de assert além dos que já estão disponíveis no Ruby e no Rails. Para instalar, dentro do diretório vendor/plugins
svn co http://topfunky.net/svn/plugins/topfunky_power_tools/
0 comentários : 30.07.2007 12:57 AM


