tonysm / laravel-paratest
Requires
- php: ^7.3|^8.0
- brianium/paratest: ^6.1
- illuminate/support: ^8.0
Requires (Dev)
- orchestra/testbench: ^6.2
- phpunit/phpunit: ^9.3
This package is auto-updated.
Last update: 2022-01-06 13:57:51 UTC
README
此包包含一些辅助 Artisan 命令和测试特性,允许您使用 Paratest 在 MySQL 或 PostgreSQL 数据库上并行运行功能测试,而不会发生冲突。
包将为每个正在运行的测试进程创建 1 个数据库,以避免在您的功能测试尝试运行创建一些固定数据时,另一个进程中的测试运行 artisan migrate:fresh
时的竞态条件。
您也不必担心创建测试数据库。它们将在您运行测试时自动创建。甚至还有一个辅助运行器在测试完成后清理测试数据库。
安装
您可以通过 composer 安装此包
composer require tonysm/laravel-paratest --dev
使用方法
注意:您需要一个具有创建数据库权限的用户。
不要使用 Laravel 的 RefreshDatabase 特性,而使用包中的特性
<?php use Tonysm\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/Tonysm\\LaravelParatest\\Testing\\RefreshDatabase/g'
您需要手动在您的 base TestCase 中启动此设置特性,因为 Laravel 不会自动执行此操作
<?php namespace Tests; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; use Tonysm\LaravelParatest\Testing\RefreshDatabase; 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/tonysm/laravel-paratest/src/ParatestLaravelRunner.php" ] } }
现在,运行 composer dump -o
,然后您可以使用运行器,如下所示
paratest --runner ParatestLaravelRunner
这将清理测试完成后运行的测试数据库。
此包还提供了以下 Artisan 命令
php artisan db:create
php artisan db:drop
php artisan db:recreate
请明智地使用。
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近发生了哪些变化。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全
如果您发现任何安全相关的问题,请通过电子邮件 tonyzrp@gmail.com 报告,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。
Laravel 包模板
此包是使用Laravel 包模板生成的。