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 失败后(我想选择何时执行回滚,但它引发了问题)。