【问题标题】:How to Catch up On Tests for Rails Site如何赶上 Rails 站点的测试
【发布时间】:2013-05-20 15:39:31
【问题描述】:

我学习了 Rails 来创建网站,基本版本已经启动并运行。不幸的是,我只为我的代码编写了几个测试。我现在应该怎么做才能获得代码的测试覆盖率?现在很难回去为我以前的所有代码编写测试。使用像 Selenium 这样的记录工具来访问站点并记录测试是否有意义? Rails 有专门的录制工具吗?

(简而言之,如何才能赶上没有足够测试的代码的测试覆盖率?)

【问题讨论】:

    标签: ruby-on-rails ruby testing automated-tests integration-testing


    【解决方案1】:

    首先,使用rcov 之类的工具定量测量您的测试覆盖率。

    集成测试将提供更多覆盖率是对的,因此它们是您实现目标的正确选择。但是,当它们失败时,它们提供的反馈意义不大,因此您将来需要用更孤立的测试来扩充或替换它们。

    我希望记录测试会导致测试的来源难以让人阅读。因此,您可能需要考虑 capybara-webkit(但要考虑 don't use capybara 2.1 yet)。

    最后,由于您当前的测试库很小,您有机会考虑rspecshoulda-context

    【讨论】:

      【解决方案2】:

      事实是,您只需要返回并纠正所有测试即可。

      首先,没有任何一种“记录”工具可以帮助进行单元和控制器测试。

      其次,如果您确实使用了一些东西来“记录”功能/集成测试,那么您究竟会测试什么?如果您不具体说明您期望在那里的功能,您如何确定您的应用程序现在正在做它应该做的事情?

      【讨论】:

      • 直到现在我一直在手动检查它是否有效。所以我可以再做一次检查并自动记录发生的事情。 (然后我可以保留它显示的重要信息。)然后,如果将来出现问题,它会在测试运行时自动显示。这听起来比现在为所有内容编写测试要容易得多。
      • 是的,“更容易”不应该是你的目标。这样想,您现在唯一可以记录的测试是“应用程序运行良好”。当某些东西“崩溃”时,这意味着行为与现在不同。但是,有什么不同呢?这种差异是好是坏?你真的需要咬紧牙关写下测试,比如“管理员可以看到这些按钮”、“普通用户看不到这些按钮”、“提交没有错误的表单会创建一个新用户”、“忘记电子邮件会导致验证错误”等. 如果您不愿意这样做,则根本不需要编写任何测试。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多