寫Cucumber之前,先了解何謂 BDD(Behaviour-Driven Development) 以及什麼是 Gherkin 語法?
簡單來說就是在寫測試前先寫測試規格書。這份測試規格會用更接近以口語的方式來描述軟體功能和測試案例。而這份規格除了事敘述文件之外,而是一份「可以被執行的規格」,也就是可以被轉成自動化測試。
其實,Gherkin語法就是使用 Given, when, then... 等關鍵字來撰寫User Story。讓客戶、PM、開發人員都能看懂的文件,降低溝通成本
最重要的是它是支援多國語言!團隊可以用自己喜歡的語言,例如英文、中文、日文、韓文等。
功能(Feature): 一句話簡介這份規格書所涵蓋的軟體功能
背景: 可以在這裡寫許多前置作業
假如: 假設我....
而且: 前置作業 1
而且: 前置作業 2
而且: 前置作業 3
場景(Scenario): 測試案例 1
假如(Given) 假設我....
當(When) 當我做了某件事...
那麼(Then) 結果應該要看到或得到...
場景(Scenario): 測試案例 2
假如(Given) 假設我....
當(When) 當我做了某件事...
那麼(Then) 結果應該要看到或得到...
英文關鍵字 | 中文關鍵字 |
---|---|
feature | 功能 |
background | 背景 劇本 |
scenario | 場景 |
scenario_outline | 場景大綱 劇本大綱 |
examples | 例子 |
given | 假如假設假定 |
when | 當 |
then | 那麼 |
and | 而且 並且 同時 |
but | 但是 |
通常一個 場景(scenario) 只會搭配一個 當(when)
group :test do
gem 'cucumber-rails', require: false
# database_cleaner is not mandatory, but highly recommended
gem 'database_cleaner'
end
當然如果要指定版本也是可以的我們目前已載官網的為主
rails generate cucumber:install
生成以下 Cucumber 檔案
...略
create config/cucumber.yml
create script/cucumber
chmod script/cucumber
create features/step_definitions
create features/step_definitions/.gitkeep
create features/support
create features/support/env.rb
exist lib/tasks
create lib/tasks/cucumber.rake
在 cucumber 裡 DatabaseCleaner 為預設,如果想關閉此預設行為可以下以下指令
# features/support/env.rb
# ...
Cucumber::Rails::Database.autorun_database_cleaner = false
明天就可以來講 cucumber 的寫法摟!
參考來源: