【问题标题】:How can I run Ruby tests automatically?如何自动运行 Ruby 测试?
【发布时间】:2010-12-07 17:21:38
【问题描述】:

我有一个高度依赖各种 Web API 的系统。我想每天至少运行一次我的 API 特定测试,以确保所有 API 仍然可以正常运行。我有一组单元测试(只是测试 API 调用预期数据的普通 rb 文件)并且希望每 24 小时运行一次。如果出现问题,我想采取措施(例如给我发电子邮件或给我发短信)。

如何最好地设置自动化 Ruby 测试并解析结果?我可以设置一个 cron 作业来处理 .rb 文件吗?如果测试失败,我将如何采取行动并以编程方式检测?也许有某种针对 RUby 的持续集成解决方案可以处理这个问题?

【问题讨论】:

    标签: ruby unit-testing testing continuous-integration


    【解决方案1】:

    我刚刚使用 Dr. Nic 的 this amazing tutorial 完成了将 Hudson CI 设置为我的集成服务器的过程。它通过 gem 安装,几乎是预配置的,而且运行起来非常简单。

    我正在使用 rspec 和 cucumber,当 Hudson 在我的 git 存储库上看到新提交时,它会运行所有测试。如果所有测试都通过,它会将代码合并到我的主分支中。如果有任何测试失败,它会牵着马,给我发一封电子邮件。

    编辑:

    我还想对 Hudson 的 ChuckNorris 插件表示十个赞。敏捷并没有比与德克萨斯游侠队的 Walker 结对编程更好。

    【讨论】:

    • 我唯一不喜欢使用 Hudson 进行测试的地方是检查错误代码的可能性。我宁愿知道它在提交代码之前通过了测试。没有什么比拥有一个好的代码库更令人恼火的了,更新它,然后看着它进入 h-e-double-toothpicks。
    • 哈哈,完全正确。我通过将代码推送到 github 上的“pre-master”分支解决了这个问题; Hudson 对此进行检查,运行测试,如果一切顺利,将代码推送到“master”。 (我也应该承认,我现在是唯一的开发者……太伤心了。)
    • 我喜欢这种 pre-master 技术,我没有想过它,它解决了整个提交并发和始终工作的构建问题。
    【解决方案2】:

    Ruby 内置了Test::UnitRSpecZenTestshouldacucumber,可能还有更多工具可以帮助测试。由于是内置的,Test::Unit 被大量使用,是被其他工具击败的目标。

    ZenTest 和 RSpec 可以进行持续测试:您进行更改并保存文件,他们会看到并运行测试套件。我喜欢这样,因为那时我马上就知道事情的状态。

    我没有用过黄瓜,但用过其余的。我听说黄瓜的重点是集成测试,但这可能是评论者的感受,而不是开发人员的设计。 list of tutorials for cucumber 是有趣的浏览。特别是webrat: Automated Acceptance Testing with RSpec or Cucumber

    其中任何一个都可以与 cron 连接以定期运行;就像对待任何其他命令行应用程序一样对待它们。

    与网络测试结合起来也应该很容易,但是您必须确定所需的 gem/模块并编写胶水代码。我不需要这样的野兽,因为我会使用 Mechanize 和/或其他 HTTP gem 之一加上 Nokogiri 来洗劫页面。

    【讨论】:

      猜你喜欢
      • 2021-04-29
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 2018-12-08
      • 2013-06-30
      相关资源
      最近更新 更多