Команда test
Команда test запускает тесты в Laravel с использованием PHPUnit.
По умолчанию выполняется параллельный запуск тестов для повышения производительности.
Команда поддерживает множество опций для фильтрации, группировки и настройки окружения тестов.
В основе работы лежит PHPUnit с дополнительными интеграционными возможностями для Laravel.
Синтаксис
php artisan test [options] [--] [<test-file>]
Базовые опции команды
Команда test поддерживает следующие основные опции:
--filter Фильтрация тестов по названию
--testsuite Запуск конкретного набора тестов
--group Запуск тестов из определённой группы
--exclude-group Исключение тестов из группы
--coverage Включение отчёта о покрытии кода
--parallel Запуск тестов параллельно
--without-tty Отключение TTY режима
Пример запуска всех тестов
Базовый запуск всех тестов в приложении:
php artisan test
Результат выполнения команды:
Running tests...
PASS Tests\Unit\ExampleTest
✓ example
PASS Tests\Feature\ExampleTest
✓ example
Tests: 2 passed
Time: 0.12s
Пример фильтрации тестов
Запуск только тестов, содержащих в названии определённое слово:
php artisan test --filter=user
Результат выполнения команды:
Running tests...
PASS Tests\Feature\UserTest
✓ user can register
✓ user can login
Tests: 2 passed
Time: 0.08s
Пример запуска конкретного тестового файла
Запуск определённого тестового файла по пути:
php artisan test tests/Feature/UserTest.php
Результат выполнения команды:
Running tests...
PASS Tests\Feature\UserTest
✓ user can register
✓ user can login
✓ user can logout
Tests: 3 passed
Time: 0.10s
Пример запуска тестов по группе
Запуск тестов из определённой группы, указанной в атрибуте @group:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class UserTest extends TestCase
{
/**
* @group user
*/
public function test_user_registration()
{
$user = User::create([
'name' => 'John Doe',
'email' => 'john@example.com',
]);
$this->assertDatabaseHas('users', [
'email' => 'john@example.com',
]);
}
}
?>
php artisan test --group=user
Результат выполнения команды:
Running tests...
PASS Tests\Feature\UserTest
✓ user registration
Tests: 1 passed
Time: 0.06s
Пример параллельного запуска тестов
Запуск тестов параллельно для ускорения выполнения:
php artisan test --parallel
Результат выполнения команды:
Running tests in parallel...
PASS Tests\Unit\ExampleTest
✓ example
PASS Tests\Feature\UserTest
✓ user registration
PASS Tests\Feature\ApiTest
✓ api response
Tests: 3 passed
Time: 0.05s
Пример запуска тестов с покрытием кода
Запуск тестов с генерацией отчёта о покрытии кода:
php artisan test --coverage
Результат выполнения команды:
Running tests...
PASS Tests\Unit\ExampleTest
✓ example
Code Coverage Report:
Total coverage: 85.5%
- App\Models\User: 100.0%
- App\Http\Controllers: 80.0%
- App\Services: 90.0%
Пример исключения тестов из группы
Запуск всех тестов, кроме тестов из указанной группы:
php artisan test --exclude-group=slow
Результат выполнения команды:
Running tests...
PASS Tests\Feature\UserTest
✓ user registration
PASS Tests\Unit\ExampleTest
✓ example
Skipped tests: 1 (slow group)
Tests: 2 passed
Time: 0.07s
Пример теста с использованием фабрик
Создание полноценного теста с использованием моделей и фабрик:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Article;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ArticleTest extends TestCase
{
use RefreshDatabase;
public function test_article_creation()
{
$user = User::factory()->create();
$article = Article::factory()->create([
'user_id' => $user->id,
'title' => 'Test Article',
'content' => 'This is test content',
]);
$this->assertDatabaseHas('articles', [
'title' => 'Test Article',
]);
$this->assertTrue($article->user->is($user));
}
}
?>
php artisan test tests/Feature/ArticleTest.php
Результат выполнения команды:
Running tests...
PASS Tests\Feature\ArticleTest
✓ article creation
Tests: 1 passed
Time: 0.15s
Смотрите также
-
команда
make-test,
которая создаёт новый тестовый класс -
команда
tinker,
которая запускает интерактивную оболочку для тестирования кода -
команда
make-factory,
которая создаёт фабрику для генерации тестовых данных -
команда
make-seeder,
которая создаёт сидер для заполнения базы данных