ruano_a/selective-test-isolation-bundle

一个提供简单回滚数据库的 Symfony 扩展包,如果测试方法上有注解。

1.0.1 2020-09-08 12:48 UTC

This package is auto-updated.

Last update: 2024-09-08 22:28:47 UTC


README

一个提供简单回滚数据库的 Symfony 扩展包,如果测试方法上有注解。它只适用于 PHPUnit 版本 >= 7.5。

配置

composer require --dev ruano_a/selective-test-isolation-bundle
  • 如果使用 symfony 3 或以下版本:在 AppKernel.php 中添加该扩展包
if (in_array($env, ['dev', 'test'])) {
    ...
    if ($env === 'test') {
        $bundles[] = new ruano_a\SelectiveTestIsolationBundle\SelectiveTestIsolationBundle();
    }
}
  • 否则如果使用 symfony 4 或以上版本:在 bundles.php 中添加该扩展包
return [
    ...,
    ruano_a\SelectiveTestIsolationBundle\SelectiveTestIsolationBundle::class => ['test' => true],
];
  • 在您的 xml 配置 (phpunit.xml) 中添加该扩展
    <phpunit>
        ...
        <extensions>
            <extension class="ruano_a\SelectiveTestIsolationBundle\PHPUnit\PHPUnitExtension" />
        </extensions>
    </phpunit>
  • 使用该注解的测试类必须继承 ruano_a\SelectiveTestIsolationBundle\PHPUnit\IsolableKernelTestCase 类。
    class myTestClass extends IsolableKernelTestCase
    {
    ...
  • 然后,将 @Rollback 注解(来自 ruano_a\SelectiveTestIsolationBundle\Annotations\Rollback)放到那些不应影响数据库的方法上
    /**
     * @Rollback
     */
    public function testFunctionChangingTheDatabase()
    {
    ...

这就完成了。

注意

  • 重要:IsolableKernelTestCase 类在类加载时启动内核,因此不要重复启动。它需要它来访问实体管理器。如果您想在其他地方启动它,请重写这些方法。
  • 该扩展包不能与低于 7.5 的 PHPUnit 版本一起使用,因为监听器系统似乎不允许您获取测试方法信息。
  • 这是为我个人使用制作的,在修改这个扩展包的分支 https://github.com/dmaicher/doctrine-test-bundle 失败后(我想选择何时执行回滚,但它引发了问题)。