运行 laravel 中的测试套件中只有一个单元测试

Run only one unit test from a test suite in laravel

使用 phpunit 命令 Laravel 将 运行 我们项目中的所有单元测试。 如何 运行 Laravel 5.1 中的一个或特定单元测试?

我只想从我的测试套件中 运行 testFindToken

<?php

use Mockery as m;
use App\Models\AccessToken;
use Illuminate\Foundation\Testing\WithoutMiddleware;

class AccessTokenRepositoryTest extends TestCase
{
    use WithoutMiddleware;

    public function setUp()
    {
        parent::setUp();

        $this->accessToken = factory(AccessToken::class);
        $this->repo_AccessToken = app()->make('App\Repositories\AccessTokenRepository');
    }

    public function testFindToken()
    {
        $model = $this->accessToken->make();
        $model->save();
        $model_accessToken = $this->repo_AccessToken->findToken($model->id);
        $this->assertInstanceOf(Illuminate\Database\Eloquent\Model::class, $model);
        $this->assertNotNull(true, $model_accessToken);
    }    
}

使用此命令运行 测试套件中的特定测试。

phpunit --filter {TestMethodName}

如果您想更具体地说明您的文件,请将文件路径作为第二个参数传递

phpunit --filter {TestMethodName} {FilePath}

示例:

phpunit --filter testExample path/to/filename.php

注:

如果您有一个名为 testSave 的函数和另一个名为 testSaveAndDrop 的函数,并且您将 testSave 传递给 --filter 像这样

phpunit --filter testSave

它还会 运行 testSaveAndDrop 和任何其他以 testSave*

开头的函数

基本上是子串匹配。如果您想排除所有其他方法,请使用 $ 字符串标记结尾,例如

phpunit --filter '/testSave$/'

您应该 运行 ./vendor/bin/phpunit --help 获取 phpunit 的所有选项。您可以 运行 phpunit 使用下面的一些选项 运行 特定方法或 class.

--filter <pattern>          Filter which tests to run.

--testsuite <name,...>      Filter which testsuite to run

对于 windows 环境,这对我有用:

在控制台中:

vendor\bin\phpunit --filter login_return_200_if_credentials_are_fine tests/Unit/Http/Controllers/AuthControllerTest.php

哪里

login_return_200_if_credentials_are_fine - 你的测试方法 tests/Unit/Http/Controllers/AuthControllerTest.php - 定义测试方法的路径

php artisan test --filter UserTest