在单个类中为Symfony WebTestCase(PHPUnit)设置测试执行的顺序

时间:2018-07-27 06:12:43

标签: php symfony phpunit functional-testing

我正在将测试范围添加到Symfony内置的API中。我有一个ApiControllerTest,它扩展了Symfony的WebTestCase,并在API控制器的不同控制器动作上执行测试。请注意,这些是功能测试,因此它们正在调用控制器路由并将其保存到数据库。

我希望测试按特定顺序运行。例如,有一些API方法可以保存一个项目,将该项目与另一个项目匹配,对该项目添加需求,删除该项目等。我知道单元测试不应相互依赖,但功能测试似乎可以相互依赖。与在每次测试之前和之后设置和拆卸手动添加/删除项目的方法相比,将项目保存在第一个测试中,然后更新后续测试会更加有效,删除该项目等。

我看过Run PHPUnit Tests in Certain Order并尝试使用@depends批注,但这是行不通的(我不是想将一项测试的结果传递给另一项)。另外,我已经看到您可以指定单独的类的运行顺序,但是这些测试似乎都是相关的,属于一个类,因为它们正在测试单个控制器(我通常每个控制器都有一个测试类)我正在测试的服务类,服务类等)

是否可以使用PHPUnit或Symfony的WebTestCase指定特定类中的测试应运行的顺序?还是我在这里偏离设计模式,需要使用其他方法?

1 个答案:

答案 0 :(得分:-1)

即使您考虑过但没有那样做,@depends也是您所需要的。它不仅意味着传递值,而且还满足您的确切需求。

此外,即使测试正常运行,因此您也不必在测试之间传递对象或数据,但返回值对于传递在上一个测试中创建的实体的ID很有用,以便在下一个测试中加载一个。