2011-07-08 65 views
0

我想了解BDD,我讀過有關嬰兒的步驟。他們如何工作?我試圖弄清楚。BDD:Baby步驟如何工作?

例如,使用以下功能:

Feature: Months and days to days 
In order to see months and days as days 
As a date conversion fan 
I need a webpage where users can enter days and 
    months and convert them to days. 

Scenario: Convert 12 months and 0 days to days 
Given 「12」 months And 「0」 days 
When I click on convert button 
Then I should get: 360 

我應該創建一個代碼,以使在步驟的方法轉換權,然後重構代碼,並把他們在課堂上還是應該先從類?

這看起來很簡單,但我很困惑。我想了解嬰兒的步驟,我不想破壞它...

謝謝。

回答

0

你的問題很難理解,但通過嬰兒的步驟,作者可能意味着從一個非常基本的場景開始,並進入更復雜的場景。對於您所描述的故事,最基本的例子可以進入0個月0天,檢驗結果爲0天。從那裏你可以只輸入幾天或只輸入幾個月,最後輸入一個包含月份和日期的例子。

1

至於我可以看到,嬰兒的步驟意味着你必須只執行小的變化一步一步來。它類似於TDD:編寫新的測試,編寫代碼,請確保它不工作,使其正常工作,編寫新的測試...等 讓我們看起來像到您的例子:

轉換12個月0天鑑於「12」個月「0」天 當我點擊轉換按鈕天,那麼我應該得到:360

我認爲,你必須做的第一件事情就是像創建類名「轉換器」。第一步完成。接下來的一小步是創建方法

int convertToDays(int monthCount,int daysCount) 

然後通過這個步驟。你首先描述你的代碼的行爲,編碼在它之後。 接下來的步驟將是這樣的:

  1. 填充方法與詮釋正確的工作價值觀
  2. 使其與字符串輸入值工作。
  3. 添加在
  4. 製作用戶通知類型的數據進行驗證,如果輸入無效
  5. 做一些重構

我希望這會幫助你。謝謝。

0

你還沒有說你正在做哪種平臺上的任何內容,或者是否有任何的代碼呢。紅寶石? Rails的? Java的? C#?蟒蛇?

嬰兒的步驟意味着以非常小的步幅移動,不出所料,並且每次都重新運行測試。 「嬰兒步」的初衷是適用於內紅 - 綠 - 重構循環,在單元測試水平。在驗收測試級別,BDD也出現並增加了一個外部迴路。 BDD的風格是開發「外部進入」。

還有一個經常組合使用的詞組,如「讓編譯器指導你的步驟」。

假設你沒有代碼,並且你正在使用說黃瓜和RSpec - 在其他平臺上的描述不會有太大變化 - 當你在黃瓜中運行你的故事時,它會告訴你你沒有執行步驟,甚至給你基本的有關如何實施您的給定時間和時間的建議。

所以,寶貝步驟。拿其中一個,讓我們說「給定」,並使用建議的實現。您在Ruby中創建了一些步驟代碼,該模式與該行匹配,然後調用什麼..現在什麼都沒有。在這段代碼中,它可能會簡單地將參數轉換爲整數(稍後您可能會構建構造函數,但現在只需做最簡單的工作即可)。

當你再次運行黃瓜時,它會抱怨兩個缺失的步驟,但關於您填寫的步驟的消息已更改。

現在填寫下一步。當你再次運行黃瓜時,只有最後一步失敗。但是你必須在第二步中添加更多的內容。 etc

看看本教程,它給你一些想法。

http://www.slideshare.net/josephwilk/outsidein-development-with-cucumber-and-rspec