tonysm/laravel-paratest

此包已被废弃,不再维护。作者建议使用 laravel/framework 包。

并行运行 Laravel 功能测试,避免竞态条件。

0.0.2 2020-12-23 03:40 UTC

This package is auto-updated.

Last update: 2022-01-06 13:57:51 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

此包包含一些辅助 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 包模板生成的。