Testovací denní chléb 2 - rcov podrobněji

Posted by Jan Kubr Mon, 27 Aug 2007 17:25:00 GMT

O tom co je rcov jsme již psali, dnes jen doplním malý tip na jeho používání. Robert Cigán ve své přednášce na Ostrava on Rails poznamenává, že na stoprocentní pokrytí kódu testy se dostat nelze, neboť se jako kód započítávají například i konfigurační soubory. Mno abych zvýšil vaši motivaci možností dosáhnout oné vysněné hranice (některým učastníkem minulého pražského setkání toto počínání bylo přirovnáno k onanii.. nebo že by vás tahle analogie moc nemotivavala??), zkuste tohle:

rcov --rails  test/**/*_test.rb

Kouzelný přepínač --rails odstraní z přehledu obsah adresářů config, environment a vendor. Pokud chcete odebrat nebo přidat jiné adresáře (obzvláště vhodné pro non-Rails Ruby projekty), zkuste přepínače --exclude nebo --include, které očekávají seznam regulárních výrazů. Například

--exclude '^generic/'

vynechá z přehledu vše z adresáře generic (toho přímo přístupného z aktuální složky, ne žádného více vnořeného).

Prima, ale komu by se to pokaždé chtělo vypisovat, že? Řešením je obohacení vašeho Rakefilu o následující:

namespace :test do

  desc 'Measures test coverage'
  task :coverage do
    dir = "coverage"
    rm_rf dir
    rcov = "rcov --rails -o #{dir} --text-summary"
    system("#{rcov} test/**/*_test.rb")
    system("open #{dir}/index.html") if PLATFORM['darwin']
  end

end

Tento nový úkol Rakefilu smaže starý adresář s vygenerovanými statistikami, spustí rcov a pak dokonce i otevře prohlížeč (na OS X, nahraďte čímkoliv potřebujete).

Tímto dostáváme od rcovu přesné údaje a spuštění je již tak snadné, že je hřích ho nepoužívat.

rake test:coverage

1 comment | Tags | atom

Comments

Leave a response

  1. Avatar
    Robert Cigán
    about 1 hour later:
    Tak to je pekne, az tak do podrobna jsem rcov nikdy nestudoval, urcite se bude hodit !!!

Leave a comment