For a long time, I had a deep hatred for RSpec because we used it on a project before the API stabilized (and before it was easy to maintain an environment where all developers had the same gems).
We got stuck on some particular revision in the RSpec Subversion repository. The choice was re-write all the specs, or stick with that ancient version. We re-wrote all the specs -- to test/unit.
Several years later, and I have never picked up RSpec for my own use. However, I am working on another project that chose RSpec and it is working out pretty well. I have turned on render_views so I don't have to test those separately and am only using mocking for external services.
Cucumber, on the other hand, I do not understand at all. Why write tests in English when you have Ruby?
There's a few solid reasons I've heard for using Cucumber, although in my life I've not found a need for it yet.
1) Although it's a Ruby tool, it works with a ton of languages. Someone can write code based off Cuke tests in Ruby or .NET or whatever without much trouble.
2) it makes web workflow testing cake
3) it keeps people strongly out of the "implementation" zone when they are thinking about how a program should be properly executed
4) it works with many spoken languages so if you're collaborating with an international team it could be useful there.
5) it has a whole bunch of report formats built in
If you don't find any of those features incredibly useful, I'm not sure you're going to ever see a need for it. I've played with it but for me it seems more hassle than anything. I do LIKE it but that's not enough to justify the time spent messing with it.
We got stuck on some particular revision in the RSpec Subversion repository. The choice was re-write all the specs, or stick with that ancient version. We re-wrote all the specs -- to test/unit.
Several years later, and I have never picked up RSpec for my own use. However, I am working on another project that chose RSpec and it is working out pretty well. I have turned on render_views so I don't have to test those separately and am only using mocking for external services.
Cucumber, on the other hand, I do not understand at all. Why write tests in English when you have Ruby?