2012-11-08 199 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

当然,这是你的项目,你可以测试你想要什么,你想要的。

我通常在我的模型单元测试测试整个验证。在那之后,我又在我的网页再次测试(但不太广泛)测试(这是为了测试是否正确的变量被控制器解析,等...)