php - 在 Symfony WebTestCase (PHPUnit) 的单个类中设置测试执行顺序
问题描述
我正在为 Symfony 中构建的 API 添加测试覆盖率。我有一个ApiControllerTest
扩展 Symfony 的WebTestCase
,并对 API 控制器的不同控制器操作执行测试。请注意,这些是功能测试,因此它们正在调用控制器路由并保存到数据库中。
我希望测试以特定顺序运行。例如,有一些 API 方法可以保存项目、将该项目与另一个项目匹配、向该项目添加需求、删除该项目等。我知道单元测试不应该相互依赖,但功能测试似乎可以。与在每次测试之前和之后手动添加/删除项目的方法不同,在第一次测试中保存项目,然后为该项目更新、删除等后续测试会更有效.
我查看了以特定顺序运行 PHPUnit 测试并尝试使用@depends
注释,但这不起作用(我不是试图将一个测试的结果传递给另一个)。另外,我看到您可以指定单独类的运行顺序,但似乎这些测试都是相关的并且属于一个类,因为它们正在测试一个控制器(我通常每个控制器都有一个测试类我正在测试的类、服务类等)
有没有办法使用 PHPUnit 或 SymfonyWebTestCase
来指定特定类中的测试应该运行的顺序?或者我离这里的设计模式还有一段距离,需要使用不同的方法?
解决方案
即使您考虑过但没有那样做,@depends
也是您所需要的。它不仅用于传递值,还用于您的确切需求。
此外,即使测试是功能性的,因此您不会在测试之间传递对象或数据,返回值对于传递在前一个测试中创建的实体的 ID 很有用,以便在下一个测试中加载它。
推荐阅读
- php - 如何用我的包覆盖 Laravel 默认路由
- java - Apache POI 加载 xlsx - 包不存在并且无法使用 maven 找到符号
- python-3.x - 在循环内更改值但只更改一次
- html - 使用 jinja 在 html 中渲染 TextAreaField
- react-native-reanimated - useAnimatedStyle 返回的样式常量导致应用停止工作
- reactjs - 如何使我的 div 标签禁用无法点击
- python - 允许用户取消长时间运行的 API 调用
- google-chrome - Google Chrome 浏览器:以编程方式(外部)跳转到特定的打开选项卡
- python - 如何使用 Python 执行 Shell 命令以恢复数据库 postgres?
- javascript - 使用 JSON 数据在前端导出带有页眉/页脚信息的报告