Php 用户注册模块中单元测试和功能测试的区别

Php 用户注册模块中单元测试和功能测试的区别,php,phpunit,tdd,symfony,Php,Phpunit,Tdd,Symfony,我想写注册模块。我假设我需要创建实体模型User,其中包括id、email、password和active属性 在这种情况下,我应该为这个类中的每个get和set方法编写测试,还是应该编写一个方法设置程序来创建新的对象用户,然后设置参数 我如何编写测试,检查我的用户对象是否一切正常,以及另一个测试,例如,当电子邮件无效时,测试是否抛出异常 我知道单元测试是如何工作的,但我仍然无法确定什么时候测试应该是单元测试,什么时候功能测试是为类中的方法编写的代码。它允许根据输入参数测试特定方法在中的工作方式

我想写注册模块。我假设我需要创建实体模型User,其中包括id、email、password和active属性

在这种情况下,我应该为这个类中的每个get和set方法编写测试,还是应该编写一个方法设置程序来创建新的对象用户,然后设置参数

我如何编写测试,检查我的用户对象是否一切正常,以及另一个测试,例如,当电子邮件无效时,测试是否抛出异常


我知道单元测试是如何工作的,但我仍然无法确定什么时候测试应该是单元测试,什么时候功能测试是为类中的方法编写的代码。它允许根据输入参数测试特定方法在中的工作方式。也就是说,你可以在你的实体中测试
setEmail($email)
方法,特别是如果你验证了它等等,这是一个很好的工具。单元测试意味着您了解所测试代码的一切

功能测试是用于产品功能测试的测试。也就是说,您可以测试单个功能,如用户密码检索或注册。它回答了问题
我们是否正确地构建了软件?
。因此,这是对您的流程的验证。与单元测试相比,您实际上不必知道这些方法到底是如何工作的。有很多工具——Symfony有,也是非常强大的工具,允许使用自然语言(实际上是Gerkins)来指定测试


验收测试可确保您的产品满足客户要求。它回答了一个问题:我们是否构建了正确的东西?。有很多方面,包括可伸缩性、安全性、符合标准等,可以在验收测试中进行测试。

单元测试是为类中的方法编写的代码。它允许根据输入参数测试特定方法在中的工作方式。也就是说,你可以在你的实体中测试
setEmail($email)
方法,特别是如果你验证了它等等,这是一个很好的工具。单元测试意味着您了解所测试代码的一切

功能测试是用于产品功能测试的测试。也就是说,您可以测试单个功能,如用户密码检索或注册。它回答了问题
我们是否正确地构建了软件?
。因此,这是对您的流程的验证。与单元测试相比,您实际上不必知道这些方法到底是如何工作的。有很多工具——Symfony有,也是非常强大的工具,允许使用自然语言(实际上是Gerkins)来指定测试


验收测试可确保您的产品满足客户要求。它回答了一个问题:我们是否构建了正确的东西?。有很多方面,包括可扩展性、安全性、符合标准等,可以在验收测试中进行测试。

好的,谢谢您的解释。还有一个问题:如果我的用户类有很多用户对象的setter,那么我应该分别为它们编写测试并只测试例如email,还是应该创建整个测试对象,然后检查setemail方法?这取决于您。在我看来,如果每个逻辑类都有一个单元测试类,并且将所有的测试方法都保留在那里,那么就更容易了。你有没有看一看现有的Symfony项目如何处理相关的用户?非常感谢链接。我没有检查这些文件。问题解决,谢谢你的解释。还有一个问题:如果我的用户类有很多用户对象的setter,那么我应该分别为它们编写测试并只测试例如email,还是应该创建整个测试对象,然后检查setemail方法?这取决于您。在我看来,如果每个逻辑类都有一个单元测试类,并且将所有的测试方法都保留在那里,那么就更容易了。你有没有看一看现有的Symfony项目如何处理相关的用户?非常感谢链接。我没有检查这些文件。问题解决