可用于Rails应用程序的测试工具

时间:2015-05-25 09:46:43

标签: ruby-on-rails ruby rspec

我是谷歌测试的新手,并发现很少的测试框架  1. rspec  黄瓜  水豚  工厂女郎  5. jasmin

和默认rails有自己的测试工具。

我需要知道使用什么以及何时使用 功能,单位和 集成测试

我们如何在部署之前自动化测试,这将运行我们所有的测试用例?

1 个答案:

答案 0 :(得分:0)

绝对阅读有关测试最佳做法的Rails指南;有大量关于如何测试的书籍,博客文章和Youtube视频。但是你的部分问题对我来说是一个特别的痛点,所以我也会在这里给出一个简短的答案:哪些复杂的工具值得使用,以及哪种测试?

Rails社区在测试方面非常重要,但我个人认为可能会走得太远,在实际编写代码的代价上将过多精力放在测试套件上。一些知名人士甚至提倡开发人员尝试不要编写测试一次或两次,这样我们就可以获得第一手经验,了解它对我们的代码质量,错误数量等的影响。 (掠夺者:质量下降,漏洞上升,客户满意度下降。但是,直接了解这一点比让我告诉你的不同。)

因此,我对Rails应用程序的个人测试习惯是:

  • 我比Rspec更喜欢 Minitest 。前者鼓励简单明了的单元测试;后者鼓励冗长的规范和更大的测试基础设施。 Minitest(或Rspec)或多或少地对您的测试套件“全局”,因为所有规范都将使用相同的框架编写。这很好,因为管理的工具较少,而且学习的次数较少。
  • FactoryGirl 对于快速设置给定测试的特定数据库方案非常有用。我在模型,控制器和集成测试中使用它。
  • Capybara 是一个用于编写高度可读的最终用户接受/集成测试的框架。它很有吸引力,但过度使用很容易,导致冗长的测试变得脆弱且难以维护。我首先编写(彻底)控制器规范,然后编写明智的集成测试。
  • Cucumber 是Capybara(用于集成测试)或任何其他类型测试的顶层;它允许您以人类可读的格式写出测试,并迫使您根据验收测试进行思考。但是很容易变得过于冗长,而且到目前为止我所做的小团队项目中,我还没有发现它有用。我避免它。
  • Jasmine 就像Javascript的Rspec:用于编写JS代码可读且组织良好的规范的语言。如果你有大量的自定义JS代码/逻辑,但我还没有使用它或羡慕它,这可能很有用。
  • 模型单元测试:我为每个自定义方法编写至少一个单元测试。
  • 控制器单元测试:我为每个控制器操作的每个逻辑路径编写至少一个单元测试,并启用渲染视图,以便模板生成也在此处运行
  • 集成/验收测试:我详细介绍了这些,只添加了非常小的路径来覆盖网站的基本用例。我发现大多数错误都没有被发现;控制器测试会捕获更多,因为它们渲染每个视图模板并执行用户可能触发的每一个模型逻辑。