【问题标题】:Ruby unit testing - access test result (success/failure)?Ruby 单元测试 - 访问测试结果(成功/失败)?
【发布时间】:2015-11-19 13:44:26
【问题描述】:

我使用的是 Ruby 2.2。如果成功或失败,我需要运行单元测试并获取信息。我正在浏览 test-unit 和 minitest 的文档(在 Ruby 2.2 中进行单元测试的建议 gem),但我似乎找不到可以返回或存储有关测试结果信息的方法。

我需要的只是测试是否失败/成功的信息,我需要从 Ruby 级别访问它。我想我必须使用特定的方法来运行测试 - 到目前为止,我只能通过运行测试文件来运行单个测试,而不是通过调用任何方法。

也许这只是我对 Ruby 的了解不足,无论如何,我将不胜感激。

【问题讨论】:

  • 您想以编程方式运行测试吗?我的意思是,通常测试通过/失败会报告给文件、控制台或两者。
  • 我更愿意在 Ruby 级别访问它。如果那不可能,那么文件 - 但我想那将是文本形式,就像控制台上的结果一样?我需要准备有关测试失败次数的统计信息,我宁愿省略解析此类输出。我也不知道如何将结果保存到文件中。
  • 听起来您可能需要考虑现有的 CI 解决方案以避免重复他们已经在做的事情,但是 YMMV。

标签: ruby unit-testing minitest ruby-2.2


【解决方案1】:

也许您可以使用 Ruby 运行 shell 命令并返回结果的能力来运行测试。

这是test-unit 的示例:

test_output = `ruby test.rb --runner console --verbose=progress`

failed_tests = test_output.chomp.split('').count('F')
passed_tests = test_output.chomp.split('').count('.')

puts "P: #{passed_tests}, F: #{failed_tests}"

我们正在使用--verbose=progress 选项,以便我们获得最少的输出。如下所示:

.F...F

我们计算F 的数量来确定有多少测试失败。 关于测试输出,示例程序将打印:

P: 4, F: 2

【讨论】:

  • 谢谢!这不是我想象的那样,但它似乎可以解决问题,非常感谢你:)
【解决方案2】:

另一种选择是使用passed? 方法: https://ruby-doc.org/stdlib-2.1.1/libdoc/minitest/unit/rdoc/MiniTest/Unit/TestCase.html#method-i-passed-3F 不确定它在最新版本的 Ruby 中是否仍然可用,因此请在使用前检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多