我制作了一个小宝石(SmsSafe),它目前有100%的代码覆盖率(根据SimpleCov)。
然而,根据Coveralls的说法,它只有41%的覆盖率(report here)。
这种差异的原因似乎是工作服将我的gem依赖项中的代码作为我的代码的一部分,并抱怨那些不被覆盖...
我似乎没有在我调查的任何其他宝石中这样做,而且我在这些宝石的代码库中似乎没有任何特殊的工作服配置......
我打电话给工作服的方式是在我的Rakefile中使用它:
require 'coveralls/rake/task'
Coveralls::RakeTask.new
task :test_with_coveralls => ["test", "coveralls:push"]
并让特拉维斯执行“test_with_coveralls”:
script: bundle exec rake test_with_coveralls
的正确方法
为什么会发生这种情况的任何想法?
答案 0 :(得分: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