前言
我刚刚开始学习Ruby,我不仅尝试学习Ruby语言,而且还尝试学习一些开发策略。作为一个初学者,我专注于测试和行为驱动的开发。(是的,我做这两件事都是为了比较)
在我正在使用的小型软件项目中
在不同的地方,我遇到了RCov作为一种工具,用来告诉我实际测试了多少代码。
我在Rakefile中设置了以下Rakefile,用于对UnitTests进行covarage分析:
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这很好,我在coverage/tests中得到了一个颜色不错的HTML。
问题介绍
类似地,我为RakeTasks编写了以下RCov,用于对规范的覆盖率分析:
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问题定义
但是,在coverage/spec中生成的HTML看起来有些不完整,而且几乎失败。
没有一个被测试的方法主体被标记为覆盖的,因此是红色的。但是,我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发布于 2012-04-11 12:09:07
我也遇到了类似的麻烦。我100%确信,当我运行它们时,它们不会被执行,从而赢得RCov。但当我禁用RCov时,他们会这么做。
将RSpec降级到2.6.0版本帮助了我。
发布于 2012-02-01 12:52:33
确保您需要足够早的rcov。
来自http://rubydoc.info/github/relevance/rcov/master/Rcov/CodeCoverageAnalyzer
注意,在分析要分析的代码之前(即在加载或需要之前),您必须要求'rcov‘。您可以使用-rrcov命令行选项调用ruby,也可以只调用:
。
发布于 2017-04-05 06:00:40
我修正了这一点,增加了:
RSpec::Core::Runner.autorun
在我的规范文件的底部;甚至与rspec 2.9一起工作
https://stackoverflow.com/questions/8886258
复制相似问题