Cuke2Beer

19

description

5 minute presentation on cucumber presented at DemoCampGuelph11

Transcript of Cuke2Beer

Page 1: Cuke2Beer
Page 2: Cuke2Beer
Page 3: Cuke2Beer
Page 4: Cuke2Beer
Page 5: Cuke2Beer
Page 6: Cuke2Beer
Page 7: Cuke2Beer

Specification

Tests Cases

Build

Test

How do we know we are done?

Deploy

•Long feedback loops•Keeping specs, system and test cases in sync•Silos of specification, build, test

Page 8: Cuke2Beer

•Reduces feedback loops

•Combines specifications, test cases &code

•Promotes collaboration

Page 9: Cuke2Beer

Executable Specification

Page 10: Cuke2Beer

Cucumber Organization

Features Step Definitions

System Under Test

Load

Match

Call

Page 11: Cuke2Beer

Feature FileFeature: Turn cucumber into beer As a cucumber presenter I want beer after my presentation So I can enjoy the rest of DemoCampGuelph

Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer

Scenario: Ali buys Declan beer Given Ali hosts DemoCampGuelph When Declan demos Cucumber Then Ali should buy Declan 1 beer

Page 12: Cuke2Beer

Step DefinitionsGiven /^(.+) hosts/ do |host| @event = Event.new(host)end

When /^(.+) demos/ do |presenter| @event.add(presenter)end

Then /^(.+) should buy (.+) (\d+) (.*)$/ do |buyer, drinker, qty, item| perk = @event.perks[0]; perk.buyer.should == buyer; perk.receiver.should == drinker perk.quantity.should == quantity.to_i; perk.item.should == item end

Page 13: Cuke2Beer

System Under Testclass Event attr_reader :perks def initialize(host) @host = host; @perks = [] end def add(presenter) @perks.push Perk.new(@host, presenter, 1, "beer") end end

class Perk attr_reader :buyer, :receiver, :quantity, :item

def initialize(buyer, receiver, quantity, item) @buyer = buyer; @receiver = receiver @quantity = quantity; @item = item endend

Page 14: Cuke2Beer

Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer

Given /^(.+) hosts/ do |host| @event = Event.new(host)End

When /^(.+) demos/ do |presenter| @event.add(presenter)end

Then /^(.+) should buy (.+) (\d+) (.*)$/ do |buyer, drinker, qty, item| perk = @event.perks[0]; perk.buyer.should == buyer; perk.receiver.should == drinker perk.quantity.should == quantity.to_i; perk.item.should == item end

“Brydon”

Page 15: Cuke2Beer

Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer

Given /^(.+) hosts/ do |host| @event = Event.new(host)End

When /^(.+) demos/ do |presenter| @event.add(presenter)end

Then /^(.+) should buy (.+) (\d+) (.*)$/ do |buyer, drinker, qty, item| perk = @event.perks[0]; perk.buyer.should == buyer; perk.receiver.should == drinker perk.quantity.should == quantity.to_i; perk.item.should == item end

“Declan”

Page 16: Cuke2Beer

Execution Scenario: Brydon buys Declan beer Given Brydon hosts DemoCampGuelph When Declan demos Cucumber Then Brydon should buy Declan 1 beer

Given /^(.+) hosts/ do |host| @event = Event.new(host)End

When /^(.+) demos/ do |presenter| @event.add(presenter)end

Then /^(.+) should buy (.+) (\d+) (.*)$/ do |buyer, drinker, qty, item| perk = @event.perks[0]; perk.buyer.should == buyer; perk.receiver.should == drinker perk.quantity.should == quantity.to_i; perk.item.should == item end

Page 17: Cuke2Beer

Spoken Languages

English Arabic Bulgarian Catalan Welsh CzechDanish German Australian LOLCAT TexanSpanish Estonian Finnish French Hebrew

Croatian Hungarian Indonesian ItalianJapanese Korean Lithuanian LatvianDutch Norwegian Polish Portuguese

Romanian Romanian-diacriticalRussian Swedish Uzbek Vietnamese

Chinese-simplified Chinese-traditional

Page 18: Cuke2Beer

Cucumber Support

Page 19: Cuke2Beer

More Stuff

http://cukes.info/http://wiki.github.com/aslakhellesoy/cucumber

Declan Whelanhttp://dpwhelan.comhttp://twitter.com/dwhelan