在 phpunit 中进行一些测试之前重新加载数据库

Reload database before some test in phpunit

我目前正在使用 phpunit 和 symfony 5 开发单元测试。 在之前使用 behat 的工作中,我们只能为具有特定标签的测试重新加载数据库。我想做类似的事情。我知道有 setUp() 方法和 @before 注释,但它们不允许我为某些测试做事而不让我做其他事情...

理想情况下,我希望有一个@reloadBase 批注放在以此为目标的测试方法上,这将绑定到 reloadBase() 方法或类似方法;或至少类似的东西,但到目前为止我还想不出办法。

我想有可能将这些测试放在一个单独的文件中,该文件将有一个 setUp 方法这样做,但这不是很好,我想保留我当前的文件组织...

有什么想法吗?谢谢

这里有两个想法:

Trait/Base Class
使用执行所有重新加载操作的方法创建特征或公共基础 class。使用特征或扩展基础 class 并仅在需要重新加载的方法中调用它。

分机
实现一个 extension. The BeforeTestHook will be called for each test with a string consisting of the class and method name. You can either use an annotation reader (e.g. Doctrine's) or use reflection 并自己解析文档块以检查该方法上是否存在 @reloadBase 注释。