如何计算RSpec测试中的示例数量?

时间:2019-03-22 20:43:18

标签: ruby rspec

我想在不运行测试的情况下计算一个目录中有多少测试。

我尝试了与Demo中类似的操作,但无法打印0以外的任何内容。


这是我尝试过的(有和没有注释掉的配置内容):

task 'count_specs' do
  RSpec.configure do |config|
    config.pattern = 'features/**/*_spec.rb'
    # config.inclusion_filter.rules
    # config.filter_run focus: true
    # config.run_all_when_everything_filtered = true
    # config.inclusion_filter.rules
    config.requires = ['spec_helper']

    config.load_spec_files

    puts 'count of examples'
    puts config.files_to_run

  puts RSpec.world.example_count
  end

  puts 'count of examples'
  puts RSpec.world.example_count
end

我如何创建一个任务,该任务计算与特定模式匹配的示例数量?

我想对两个目录运行它并比较结果。

3 个答案:

答案 0 :(得分:1)

在RSpec 3中,有一个--dry-run选项可以打印套件的格式化程序输出,而无需运行任何示例或挂钩。

rspec --dry-run

如果您需要在ruby脚本中包含大量示例:

output = `bundle exec rspec --dry-run | grep 'examples, 0 failures'`
example_count = output.split(' ').first.to_i

答案 1 :(得分:0)

也许为此有一些特定的RSpec方法,但我建议使用此脚本:

CustomChartShape.prototype.renderElementRectangle = BaseRectangle.prototype.renderElement;
CustomChartShape.prototype.renderElementDiamond = BaseDiamond.prototype.renderElement;

CustomChartShape.prototype.renderElement = function(oRm, oElement) {
    // There is possibilities that x is invalid number.
    // for instance wrong timestamp binded to time property
    if (this.bHasInvalidPropValue) { return; }

    var Node = this.getBindingInfo('endTime').binding.getContext().getProperty();

    if (Node.type == "milestone") {
        this.renderElementDiamond(oRm, oElement);
    } else {
        this.renderElementRectangle(oRm, oElement);
    }
}

这很幼稚但可靠。

此变体搜索Dir["**/*_spec.rb"].map { |path| File.read(path) }.join.scan(/( it)|( scenario)/).count " it",但您可以根据需要更改模式。

此变体仅适用于没有类似块的测试

"  scenario"

答案 2 :(得分:0)

if(isset($_SESSION['user']) && isset($_SESSION['store'])){

未记录,因此将来的发行版中可能会破坏它。 请注意,这是已运行的测试的累积数量,因此直到每次运行完测试之后,该数字才准确。