前言
我刚刚开始接触 Ruby,不仅尝试学习该语言,还尝试学习一些开发策略。作为一个初学者,我专注于测试和行为驱动开发。(是的,我这样做是为了比较)
我正在使用我的小型软件项目
- 单元测试 (TDD)
- 黄瓜 (BDD)
- Rspec(TDD 和 BDD)
在不同的地方,我遇到了 RCov 作为一种工具,它可以告诉我我真正测试了多少实际代码。
Rakefile
我在我的单元测试的协变分析中设置了以下 RakeTask :
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
这工作正常,我得到了一个漂亮的彩色 HTML 报告coverage/tests
。
问题介绍
类似的,我为 RCov 编写了以下 RakeTasks,用于对我的规范进行覆盖率分析:
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
问题定义
然而,生成的 HTML 报告coverage/spec
看起来有点不完整,几乎失败了。
没有一个被测试的方法体被标记为被覆盖,因此是红色的。但是,我 100% 确定它们是在规格范围内执行的。只有线条def method_name(args)
和class ClassName
标记为“绿色”。(以及与attr_reader :instance_variable
)
我错过了什么吗?
$: 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