2012-11-08 54 views
1

您建議測試驗證的地方?在哪裏測試驗證 - 在單元或功能測試?

這是Yii的演示功能測試:

// test login process, including validation 
$this->clickAndWait('link=Login'); 
$this->assertElementPresent('name=LoginForm[username]'); 
$this->type('name=LoginForm[username]','demo'); 
$this->clickAndWait("//input[@value='Login']"); 
$this->assertTextPresent('Password cannot be blank.'); 

但驗證對每個錯誤的情況下測試(如「密碼太長」或「電子郵件是不正確」)將需要很長時間vaste量。那麼,爲什麼不僅在單元測試中測試驗證呢?

回答

2

我通常提供一個或兩個場景是顯示用戶如何看待用於驗證的幫助,但我通常詞組他們在一個較高的水平,例如:

Given Fred forgets to fill in his phone and email 
When he tries to register 
Then he should be told what's missing. 

這些步驟既可以轉換爲simple code DSL或添加到像Cucumber工具(見BDD) 。驗證場景(功能)就足以舉例說明系統的功能。的是什麼,是不是有效的,那麼進入單元測試,你的建議

例子。

如果您將功能場景想象爲展示系統的功能,而將單元測試看作展示該類的功能或更精細的代碼元素,則更容易進行分離。請注意,我在這裏避免使用「test」作爲動詞,因爲即使在單元級別,它仍然只是示例。

+0

嘿,哎呦,感謝編輯@布爾-dev的 - 是的,鏈接到蔬菜不會幫助過許多軟件開發人員。衛生署! – Lunivore

1

當然,這是你的項目,你可以測試你想要什麼,你想要的。

我通常在我的模型單元測試測試整個驗證。在那之後,我又在我的網頁再次測試(但不太廣泛)測試(這是爲了測試是否正確的變量被控制器解析,等...)