2017年3月14日 星期二

Cucumber(2): puts, raw, diff!

說明


puts: 顯示數據
raw: 將數據表轉換成陣列
diff!: 比較數據表

建立 test_board.feature


# test_board.feature
Feature: Test board
Background: Some backgrounds here
Scenario: Add row and column
    Given a board like this:
    |    | 1 | 2 | 3 |
    | 1 |    |    |    |
    | 2 | x |    |    |
    | 3 |    |    |    |
    When player x plays in row 3, column 2
    Then the board should look like this:
    |    | 1 | 2 | 3 |
    | 1 |    |    |    |
    | 2 | x |    |    |
    | 3 |    | x |    |

建立 steps.rb


# features/step_definitions/steps.rb

Given /^a board like this:$/ do |table|
    @board = table.raw
end

When /^player x plays in row (\d+), column (\d+)$/ do |row, col|
    row, col = row.to_i, col.to_i
    @board[row][col] = 'x'
    puts @boards
end

Then /^the board should look like this:$/ do |expected_table|
    expected_table.diff!(@board)
end


執行結果




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

回傳結果




2017年3月8日 星期三

BDD Cucumber 安裝 (Windows 環境)

此篇將說明如何在 Windows 環境下使用 Cucumber
安裝 Cucumber 之前需要先安裝 Ruby

安裝 Ruby 與 DevKit


官網下載網址
http://rubyinstaller.org/downloads/

安裝好 Ruby 之後
在 cmd 底下測試 ruby -v
如果有顯示版本就表示安裝成功

升級 gem


gem update --system

安裝 DevKit


把下載好的 DevKit 解壓縮
到該目錄底下執行
ruby dk.rb init
ruby dk.rb review
ruby dk.rb install

安裝 Cucumber


gem install cucumber
gem install selenium-webdriver
gem install capybara
gem install rspec

安裝 ansi166


Cucumber 使用 ANSI 轉碼控制顏色輸出
如果你沒安裝 ANSI 轉碼會跳警告訊息
下載網址
http://adoxa.altervista.org/ansicon/
執行
x64/ansicon -i

建立目錄並執行 cucumber 初始化


mkdir cucumber_test
cd cucumber_test
cucumber --init

建立 feature


Feature: Adding
Scenario: Add two number
Given the input "2+2"
When the calculator is run
Then the output should be "4"

執行 cucumber