Symfony testing documentation并没有真正提到功能测试和集成测试之间的区别,但我的理解是they are different .
Symfony 文档这样描述功能测试:
- 提出要求;
- 测试响应;
- 点击链接或提交表格;
- 测试响应;
- 冲洗并重复。
虽然 Ruby on Rails docs像这样描述它:
- 网络请求是否成功?
- 用户是否被重定向到正确的页面?
- 用户是否成功通过身份验证?
- 是否在响应模板中存储了正确的对象?
- 是否在 View 中向用户显示了适当的消息?
Symfony 文档似乎在描述更类似于集成测试的内容。单击链接、填写表单、提交表单等。您正在测试所有这些不同的组件是否正确交互。在他们的示例测试用例中,他们基本上通过遍历网页来测试 Controller 的所有操作。
我很困惑为什么 Symfony 不区分功能测试和集成测试。 Symfony 社区中是否有人将测试隔离到特定的 Controller 操作?我是不是想多了?
最佳答案
单元测试是指逐个测试类的方法,并检查它们是否在正确的上下文中进行正确的调用。如果这些方法使用依赖项(注入(inject)服务或什至该类的其他方法),我们将模拟它们以将测试隔离到仅当前方法。
集成测试是指自动测试应用程序的功能。这是检查给定功能的所有可能使用场景是否按预期工作。要进行此类测试,您基本上是在使用爬虫,并模拟网站用户使用该功能,并检查生成的页面甚至生成的数据库数据是否一致。
功能测试是指在预生产环境中手动挑战应用程序的可用性。您有一个质量保证团队,他们将推出一些方案来检查您的网站是否按预期运行。手动测试会给你无法自动获得的反馈,例如“这个按钮很丑”、“这个功能太复杂而无法使用”,或者任何其他人类(通常会像客户一样思考)可以提供的主观反馈.
关于symfony - 对 Symfony 测试实践的困惑 : functional vs integration testing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28681524/