1

我制作了一个小宝石(SmsSafe),它目前具有 100% 的代码覆盖率(根据 SimpleCov)。

然而,根据 Coveralls 的说法,它只有 41% 的覆盖率(在此处报告)。

造成这种差异的原因似乎是工作服将我的 gem 依赖项中的代码作为我的代码的一部分,并抱怨那些没有被覆盖......

我似乎没有在我研究过的任何其他 gem 中这样做,而且在这些 gem 的代码库中似乎没有任何特殊的工作服配置......

我称工作服的方式是在我的 Rakefile 中包含以下内容:

require 'coveralls/rake/task'
Coveralls::RakeTask.new
task :test_with_coveralls => ["test", "coveralls:push"]

并让 Travis evecute “test_with_coveralls”:

script: bundle exec rake test_with_coveralls

根据他们的文档添加它的正确方法是什么

任何想法为什么会发生这种情况?

4

1 回答 1

2

有两个步骤是必要的。

一方面,按照 Coveralls 文档,将 SimpleCov 格式化程序设置为 Coveralls:

require "simplecov"
require "coveralls"
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
    SimpleCov::Formatter::HTMLFormatter,
    Coveralls::SimpleCov::Formatter
]

或者

SimpleCov.formatter = Coveralls::SimpleCov::Formatter

但是,这并不能解决问题,这是未记录的部分:

调用 SimpleCov.start 时,确保过滤掉“/gemfiles/vendor”目录

SimpleCov.start do
    add_filter "/gemfiles/vendor"
end
于 2015-01-05T13:11:31.763 回答