2017年3月9日 星期四

Cucumber(1) : Feature, Scenario, Given, When, Then 結構(Gherkin)

Cucumber 用 Feature(功能/特性) 當作測試項目
每個測試項目都會有 Scenario(場景)

還沒安裝好 Cucumber 請參考 BDD Cucumber 安裝 (Windows 環境)

建立測試目錄


$ mkdir calculator
$ cd calculator

初始化 cucumber 目錄結構


$ cucumber --init

執行測試 cucumber


$ cucumber

此時你會發現
0 scenarios
0 steps
0m0.000s

上述的輸出表示 cucumber 已經可以正常掃描到 features 的目錄
不過他還沒找到可以運行的 scenario(場景)

建立測試項目


$ cd features
$ vi adding.feature

# adding.feature

Feature: Adding
Scenario: Add two numbers
    Given the input "<input>"
    When the calculator is run
    Then the output should be "<output>"

Example:
    | input | output |
    | 2+3   | 5         |
    | 98+1 | 99       |

此文本結構就叫做 Gherkin(小黃瓜)

----
OS: 黃瓜(Cucumber)裡面的小黃瓜(Gherkin)\
----

定義步驟


執行 cucumber --init 會在 features 建立 step_definitions
(如果沒有, 請自行 mkdir)
$ cd step_definitions
$ vi calculator_steps.rb

# calculator_steps.rb

Given /^the input "([^"]*)"$/ do |input|
    @input = input
end

When /^the calculator is run$/ do
    @output = `ruby calc.rb #{@input}`
    raise('Command failed!') unless $?.success?
end

Then /^the output should be "([^"]*)"$/ do |expect_output|
    expect(@output).to eq(expect_output)
end

建立 calc.rb


建立運算呼叫的 ruby calc.rb
回到 calculator 目錄下
$ vi calc.rb

# calc.rb
print eval(ARGV[0])

執行測試 cucumber


$ cucumber

回傳結果




沒有留言: