Prefazione
Ho appena iniziato a entrare in Ruby e cerco di imparare non solo la lingua ma anche alcune strategie di sviluppo. Come una specie di principiante mi sto concentrando su Test and Behavior Driven Development. (Sì, sto facendo sia a scopo di confronto)RCov per RSpec 2 non rileva correttamente la copertura? (not Rails!)
Con il mio progetto software piccolo sto usando
- unittest (TDD)
- cetriolo (BDD)
- Rspec (TDD e BDD
In vari punti ho incontrato RCov come strumento per dirmi quanto del mio codice effettivo sto realmente testando.
ho creato il seguente RakeTask nel mio Rakefile
per l'analisi covarage dei Unittests:
desc "Run RCov to get coverage of UnitTests"
Rcov::RcovTask.new(:rcov_units) do |t|
t.pattern = 'tests/**/tc_*.rb'
t.verbose = true
t.rcov_opts << "--html"
t.rcov_opts << "--text-summary"
t.output_dir = "coverage/tests"
end
Questo funziona bene e sto ottenendo un bel report HTML colorato nel coverage/tests
.
Problema Introduzione
Simile ho scritto il seguente RakeTasks per Rcov, da utilizzare per l'analisi di copertura dei mie specifiche:
desc "Run RCov to get coverage of Specs"
Rcov::RcovTask.new(:rcov_spec) do |t|
t.pattern = 'spec/**/*_spec.rb'
t.verbose = true
t.rcov_opts << "--html"
t.rcov_opts << "--text-summary"
t.output_dir = "coverage/spec"
end
Definizione del problema
Tuttavia, il report HTML generato in coverage/spec
sguardi in qualche modo incompleto e quasi fallito.
Nessuno dei corpi del metodo testato è contrassegnato come coperto e quindi rosso. Tuttavia, sono sicuro al 100% che vengano eseguiti all'interno delle specifiche. Solo le linee def method_name(args)
e class ClassName
sono contrassegnate da "verde". (come pure le linee con attr_reader :instance_variable
)
Mi manca qualcosa?
$: ruby --version
ruby 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux]
$: rspec --version
2.8.0
$: rcov --version
rcov 0.9.11 2010-02-28
$: rake --version
rake, version 0.9.2
Se è possibile suggerire di passare a Ruby 1.9 e sostituire rcov con simplecov (funziona solo con 1.9). – Schmurfy