如何开始使用 RubyonRails 进行 TDD?

我对这些概念很熟悉(在大学里上过测试课) ,但是我还不确定如何真正地使用它们,因为我从来没有参与过一个“真正的”TDD 项目。

我即将开始使用 Ruby on Rails 开发一个项目(很可能使用2.3)。此应用程序将用于管理数据、用户和一些文件。一开始不会太复杂,但是在接下来的6个月里可能会扩展很多,所以我觉得现在是进入 TDD 的好时机。

对于如何做这件事,我已经有了一个基本的想法,但是我仍然需要一些指导和建议:

  • 什么是 Ruby on Rails TDD 101文章 我应该读吗

  • 我需要测试什么?

  • 我应该使用什么 gem/plugin?

  • 我应该用 Rspec吗? 还是其他什么?

  • 一旦我得到了所有的测试类,我该如何去部署它们? (例如: 持续集成)

  • TDD 究竟有多耗时?

  • 我是否需要读一本关于这方面的书,或者我可以通过玩它和阅读在线教程来获得一切?如果我需要读一本书,什么书?


我喜欢用例子来学习,所以是否有人能告诉我如何使用 TDD 方法来解决这个问题:

我有公司,我有联系人 联络人可联络1间公司 公司可以有多个联系人 想要创造创造的方式 联系人、公司及联系人 公司。

你不必在回答中使用这个例子,但它会有所帮助:)

48684 次浏览

TDD 就是首先编写测试。这基本上迫使您在编写应用程序代码之前先编写自己的客户机。这个循环通常是为一个不存在的 API 编写一个测试,运行测试以防它失败,编写 API 代码,再次运行测试并确保它通过。然后写下一个测试... 以此类推。

您可能也对这个 导轨感兴趣。

我应该读哪篇 Ruby on Rails TDD 101文章?

我将从 钢轨应用测试指南开始。

此外,铁路广播还有一些关于如何使用不同测试工具的优秀截屏。

我需要测试什么?

我将从模型开始,因为它们很容易测试。简单的规则是,您需要覆盖测试中的每个 if 语句。

您应该测试该方法的用途(以确保它按预期运行)以及所有边缘情况。

还要确保你不会过度测试。

我应该使用什么 gem/plugin? 我应该使用 rspec 吗? 还是其他什么?

当你开始的时候,只要使用 Test Unit。你可以使用 rspeccucumber后,你熟悉的基本知识。

如果你想要真正的测试驱动,Autotest 是一个很好的工具。但这是一个“不错的拥有”并不是必须的。

一旦我得到了所有的测试类,我如何去部署它们?

这个问题我不太确定。通常不会部署测试。一旦你有了所有的测试类,简单的输入‘ rake test’来运行所有的测试。

TDD 究竟有多耗时?

真的很节省时间。如果你喜欢迷宫拼图,你知道它几乎总是更容易解决,如果你从完成到开始。TDD 也一样。如果没有测试驱动,你就会一直想着“我下一步该做什么”。使用测试驱动,测试将告诉您下一步要做什么(如果没有逻辑,它就会崩溃,因此您只需要修复崩溃的部分)。另外,你有更少的错误,这将节省你很多时间,从长远来看。

我需要读一本关于这个的书还是 我可以通过演奏得到一切吗 在网上阅读 教程? 如果我需要读一本书, 什么书?

你不需要一本书。学习任何东西最有效的方法就是: 只管去做。一旦遇到问题,请回到书本或在线资源。这也是敏捷的。

在您的示例中,需要测试的内容是: 一个联系人可以链接到一个公司,一个公司可以有多个联系人,创建联系人的方法,以及将联系人链接到公司。

class CompanyTest <Test::Unit
def test_relationship # test associations/relationships
c = companies(:some_company)
assert_equal [a list of contacts], c.contacts # make sure a company can have multiple contacts
end
end


class ContactTest<Test::Unit
def  test_relationships
c = contact(:some_contact)
assert_equal some_company, c.company # make sure the contact link to 1 company
end


def  test_create/add
# test create contacts, here you need to make sure the contact is created correctly, and linked to company correctly
end
end

我应该使用什么 gem/plugin?

我一直很喜欢 应该的

TDD 究竟有多耗时?

我一直青睐 TDD 开发的原因是它关注于我将如何实现一段特定的代码。我有一种奇闻轶事般的感觉,每当我坚持更强烈的 TDD 原则,我花费更少的时间重写以后。不过,所花费的时间完全取决于您编写单元测试的水平。如果单元测试没有捕获预期的行为,那么花在它们上面的所有时间都被浪费了。

我制作了一个6集的视频系列,2010年夏天在旧金山作为一个公共课堂讲授。内容包括 Rails 2.3中使用 RSpec 1.3的测试和开发效率。有点过时,但主要概念适用于 Rspec 2的 Rails 3。X

Http://www.rubyfocus.biz/class_video/2010/07/19/rails_tdd_class_1.html

我推荐这本书: Ruby on Rails 教程。我快弄完了。该书使用 TDD 的 完整书。试试看!