黄瓜对水豚

有人可以解释这两个平台之间的区别吗? 既是BDD的一部分,但为什么我应该使用一个或其他,或两者在一起? 感谢您的答案

水豚是一种工具,可以与人类的方式进行交互(如访问url,点击链接,在表单中input文本并提交)。 它被用来模拟用户通过网站的stream量。 水豚,你可以写这样的事情:

describe "the signup process", :type => :feature do before :each do User.make(:email => 'user@example.com', :password => 'caplin') end it "signs me in" do visit '/sessions/new' within("#session") do fill_in 'Login', :with => 'user@example.com' fill_in 'Password', :with => 'password' end click_link 'Sign in' page.should have_content 'Success' end end 

黄瓜是编写人类可读的testing,映射到代码的工具。 有了它,你可以像这样重写上面的例子:

 Scenario: Signup process Given a user exists with email "user@example.com" and password "caplin" When I try to login with "user@example.com" and "caplin" Then I should be logged in successfully 

几乎纯文本的解释对于传递非开发人员非常有用,但也需要将一些代码映射到实际工作中(步骤定义)。

如果你正在testing一个网站,通常你会使用水豚,如果你需要与非开发者分享这些testing,就使用Cucumber。 这两个条件是独立的,所以你可以使用一个没有其他或两个或没有。

PS:在代码片段中也有一些RSpec。 这是需要的,因为黄瓜或水豚本身不能testing的东西。 他们依靠RSpec,Test :: Unit或minitest来做实际的“通过或失败”工作。

黄瓜是一种BDD工具,它以一种商业可读的,特定领域的语言来expressiontesting场景。

水豚是ROR应用的自动化testing工具(经常使用)。

在水豚github页面上,有一个使用黄瓜水豚的例子。

黄瓜是一种通用的BDD工具。 它对Web应用程序一无所知。 所以黄瓜步骤定义调用水豚为了testingnetworking应用程序。