【问题标题】:Can RSPEC handle theshold test that 90% pass is good enough?RSPEC 能否处理 90% 通过就足够好的门槛测试?
【发布时间】:2011-10-27 03:15:02
【问题描述】:

我有一个分类函数,它确定一段文本是否属于一个类别(即它返回真/假)。我有一系列真实世界的例子,我不希望它 100% 正确分类。

def meal?(text)
  !text.match(/restaurant|meal|wine|.../i).nil?
end

RSPEC 是否可以指定一个测试,当我将这数百个示例提供给该函数时,只要 90% 被正确识别,就可以算作通过?更好的办法是让 RSPEC 输出在报告中失败的示例。如果有可能怎么写这样的测试?

【问题讨论】:

    标签: ruby-on-rails testing rspec rspec2


    【解决方案1】:

    当然。

    total_correct = 0;
    @examples.each do |e|
      match = text.match(/restaurant|meal|wine|.../i)
      match.nil? ? puts e : total_correct += 1
    end
    (total_correct.to_f / @examples.size).should >= 0.9
    

    RSpec 可以处理任何您可以比较或简化为布尔表达式的内容...这几乎是软件中的所有内容。这只是一个弄清楚如何表达它的问题。

    【讨论】:

    • 感谢它有效。在运行所有测试并成为报告的一部分(无论是 HTML 还是控制台输出)之后,是否有一种 API 方法可以输出不正确的文本?
    • 并非如此,但您可以编写自己的输出方法,只需将日志记录到文件中。根据您的需要,它可能就这么简单。但是,我不确定它是否真的属于单元测试,因为这听起来更像是衡量训练的质量,而不是你的实现的准确性,但它可能适合你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    相关资源
    最近更新 更多