黄瓜是否不需要编写单元测试?

Ste*_*eet 21 ruby testing ruby-on-rails

我对Ruby/ROR可用的大量测试框架感到有些困惑.

我最近观看了Cucumber Railscasts并发现它们非常有趣.所以我开始玩游戏然后很难在概念上看到我会在哪里进行各种测试.

似乎很有可能在Cucumber中进行单元测试中可以完成的所有事情,所以我是否需要编写单元测试,或者我应该编写我的功能定义并专注于提供尽可能好的覆盖范围,因为我可以使用它.

我应该使用Rspec或Test:Unit创建我的单元测试吗?当我测试Ajax功能时,我应该使用Selenium还是Watir?

这里似乎有很多选择,我很难看到使用哪些工具以及边界在哪里.

什么是其他人的黄瓜经验以及在写黄瓜整合测试和测试之间的界限:基于单元和/或Rspec的单元和功能测试.有没有人意识到关于这个问题的一篇好文章,建议在测试方法和各种工具的优点和缺点之间划清界限.

我理解其中一些是主观的,但是如何攻击这个问题的常用方法将受到欢迎.

the*_*eIV 20

在较高级别使用Cucumber来描述用户应该能够看到和执行的操作.使用RSpec,Test:Unit,Shoulda等编写单元测试.直接从马的嘴里:

当您决定要添加新功能或修复错误时,请首先编写一个描述该功能应如何工作的新功能或方案.不要写任何代码(还).

...

这是你开始编写代码的时候.首先编写几行代码来解决你从Cucumber那里得到的失败.再次运行黄瓜.重复并冲洗,直到您对您的功能感到满意为止.当您了解细节时,请下拉一个抽象级别并使用RSpec或任何Ruby测试框架为您的类编写一些规范/测试.

黄瓜是为了测试你的整个堆栈,而不是"单位".

你需要决定在哪里画线,但很多引擎盖下的东西可能不会被黄瓜测试所覆盖.在注册时说,我填写一份表格,上面写着我的姓名,电子邮件,电话号码等.单元测试可能会检查新的User还会创建新的TelephoneNumber.从用户的角度来看,他们并不真正关心它是否会创建一个新的TelephoneNumber,他们关心的是,一旦他们注册,他们就有了一个帐户并可以看到他们的电话号码.

我没有太多写黄瓜测试的经验(还没有),但我希望这有点帮助.


Pas*_*ent 6

当单元测试失败时(我的意思是使用模拟单独测试方法的真实单元测试),它会告诉您"单元"有什么问题.当验收测试失败时,它会告诉您"功能"有什么问题,而不是问题所在.