muhmdraouf / laravel-paratest
并行运行 Laravel 功能测试,避免竞争条件。
Requires
- php: ^7.3|^8.0
- brianium/paratest: ^6.1
- illuminate/support: ^6.0
Requires (Dev)
- orchestra/testbench: ^v4.0
- phpunit/phpunit: ^9.5.0
This package is auto-updated.
Last update: 2024-09-29 06:08:53 UTC
README
此包包含一些辅助 Artisan 命令和测试特性,允许您使用 Paratest 在 MySQL 或 PostgreSQL 数据库上并行运行功能测试,而不会出现冲突。
该包将为每个正在运行的测试进程创建一个数据库,以避免当功能测试尝试运行创建一些固定数据的测试时,另一个进程正在运行 artisan migrate:fresh
时的竞争条件。
您也不必担心创建测试数据库。它们将在您运行测试时创建。甚至还有一个辅助运行器可以在测试结束后清理测试数据库。
安装
您可以通过 composer 安装此包
composer require muhmdraouf/laravel-paratest --dev
使用方法
注意:您需要一个有权创建数据库的用户。
不要使用 Laravel 的 RefreshDatabase 特性,而使用此包提供的特性
<?php use MuhmdRaouf\LaravelParatest\Testing\RefreshDatabase; class MyTest extends TestCase { use RefreshDatabase; }
提示:要替换所有现有的 Laravel RefreshDatabase 特性的使用,可以使用以下命令
grep -rl 'Illuminate\\Foundation\\Testing\\RefreshDatabase' tests/ | xargs sed -i 's/Illuminate\\Foundation\\Testing\\RefreshDatabase/MuhmdRaouf\\LaravelParatest\\Testing\\RefreshDatabase/g'
您需要手动在您的 base TestCase 中启动此设置特性,因为 Laravel 不会自动执行此操作
<?php namespace Tests; use MuhmdRaouf\LaravelParatest\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; abstract class TestCase extends BaseTestCase { use CreatesApplication; protected function setUpTraits() { $uses = parent::setUpTraits(); if (isset($uses[RefreshDatabase::class])) { $this->refreshDatabase(); } return $uses; } }
您可以使用 PHPUnit 运行您的测试
phpunit
或者您可以使用 Paratest
paratest
当使用 paratest 时,将为每个进程创建一个数据库。如果您想在测试结束时清理这些数据库,请使用提供的运行器。首先,在您的 composer.json
文件中注册运行器别名,例如以下内容
{ "autoload-dev": { "psr-4": { "Tests\\": "tests/" }, "files": [ "vendor/muhmdraouf/laravel-paratest/src/ParatestLaravelRunner.php" ] } }
现在,运行 composer dump-autoload --optimize
,然后您可以使用运行器,如下所示
paratest --runner ParatestLaravelRunner
这将测试运行结束后清理测试数据库。
此包还提供了以下 Artisan 命令
php artisan db:create
php artisan db:drop
php artisan db:recreate
这些命令仅在测试环境中运行。
测试
composer test
更新日志
请参阅 更新日志 获取更多最近更改的信息。
贡献
请参阅 贡献指南 获取详细信息。
安全性
如果您发现任何与安全性相关的问题,请通过电子邮件 mohammed@raouf.me 而不是使用问题跟踪器。
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。
Laravel 包模板
此包是用 Laravel 包模板 生成的。