Symfony 组件可用于隔离应用程序的 doctrine 数据库测试,并提高测试性能
借助 PHPUnit 扩展类,它会在每个测试用例之前开始事务,并在所有配置的 DBAL 连接的测试完成后再次回滚事务。这样做可以提高性能,因为无需在每个测试用例之前重建模式、导入备份 SQL 数据或重新插入固定数据。只要您避免发出可能导致隐式事务提交的 DDL 查询(如 ALTER TABLE、DROP TABLE 等;请参见 https://wiki.postgresql.org/wiki/Transactional_DDL_in_PostgreSQL:_A_Competitive_Analysis),您的测试将被隔离,所有测试都将看到相同的数据库状态。
它还包括一个 Psr6StaticArrayCache,该缓存将自动配置为所有 EntityManagers 的元数据和查询缓存。这极大地提高了我的测试套件的速度和内存使用率!如果您有许多启动内核的测试(如控制器测试或 ContainerAware 测试),并使用 Doctrine 实体,这将是非常有益的。
php #[SkipDatabaseRollback] // 这将对类中的所有测试进行跳过 public class MyTest extends \PHPUnit\Framework\TestCase {} #[SkipDatabaseRollback] // 也支持在 (抽象) 父类中。因此,子类中的所有测试都会跳过回滚逻辑。 抽象类 MyAbstractTest 扩展 \PHPUnit\Framework\TestCase {} #[SkipDatabaseRollback] // 仅针对一个测试方法进行跳过 public function MyTest() {}
#### 使用 Bundle 与 Behat 结合
在 Behat 配置中启用扩展暂无开放 Issues,或尚未同步最近议题。