首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Coverage

Coverage提供了Ruby的覆盖率测量功能。此功能是实验性的,因此这些API可能会在未来更改。

  1. 要求“coverage”
  1. do ::start
  1. 需要或加载Ruby源文件
  1. :: result将返回一个包含文件名作为键和覆盖数组作为值的散列。覆盖数组为每行提供解释器执行的行数。一个nil值意味着这条线的覆盖范围被禁用(例如elseend)。
代码语言:javascript
复制
[foo.rb]
s = 0
10.times do |x|
  s += x
end

if s == 45
  p :ok
else
  p :ng
end
[EOF]

require "coverage"
Coverage.start
require "foo.rb"
p Coverage.result  #=> {"foo.rb"=>[1, 1, 10, nil, nil, 1, 1, nil, 0, nil]}

公共类方法

peek_result → hash Show source

返回包含文件名作为键和覆盖数组作为值的散列。

代码语言:javascript
复制
static VALUE
rb_coverage_peek_result(VALUE klass)
{
    VALUE coverages = rb_get_coverages();
    VALUE ncoverages = rb_hash_new();
    if (!RTEST(coverages)) {
        rb_raise(rb_eRuntimeError, "coverage measurement is not enabled");
    }
    st_foreach(RHASH_TBL(coverages), coverage_peek_result_i, ncoverages);
    rb_hash_freeze(ncoverages);
    return ncoverages;
}

result → hash Show source

返回包含文件名作为键和覆盖数组作为值的散列,并禁用覆盖率测量。

代码语言:javascript
复制
static VALUE
rb_coverage_result(VALUE klass)
{
    VALUE ncoverages = rb_coverage_peek_result(klass);
    rb_reset_coverages();
    return ncoverages;
}

start → nil Show source

启用覆盖率测量。

代码语言:javascript
复制
static VALUE
rb_coverage_start(VALUE klass)
{
    VALUE coverages = rb_get_coverages();
    if (!RTEST(coverages)) {
        coverages = rb_hash_new();
        rb_obj_hide(coverages);
        rb_set_coverages(coverages);
    }
    return Qnil;
}

扫码关注腾讯云开发者

领取腾讯云代金券