php artisan make:test
Laravel 12.x で テストクラス を生成する Artisan コマンド。
Feature テストと Unit テストを簡単に作成でき、Pest 用のテストも同時に生成可能です。
コマンド構文
php artisan make:test {name} [options]
{name}
テストクラス名(名前空間や接尾辞を付けずに)。
例:UserLoginTest,LoginTest
利用可能オプション
| フラグ | 省略形 | 説明 | デフォルト |
|---|---|---|---|
--unit |
-u |
tests/Unit にテストを生成 |
false |
--pest |
-p |
Pest テスト(Pest用のテストファイル)を同時生成 | false |
--force |
-f |
既存ファイルを上書き | false |
--cover |
-c |
@covers アノテーションを追加 |
false |
--class |
-c |
既存クラスのテストを生成 | null |
備考
--classはmake:testではなくmake:class系のコマンドで使用されるオプションです。
make:testで利用できるオプションは上記の4つです。
デフォルトの生成場所
| フラグ | 生成ディレクトリ |
|---|---|
| なし(デフォルト) | tests/Feature/ |
--unit |
tests/Unit/ |
基本的な使い方
# Feature テストを生成
php artisan make:test UserLoginTest
# Unit テストを生成
php artisan make:test UserRepositoryTest --unit
# Pest 用のテストも同時に生成
php artisan make:test OrderServiceTest --pest
生成されるファイル例
tests/Feature/UserLoginTest.php
<?php
namespace Tests\Feature;
use Tests\TestCase;
class UserLoginTest extends TestCase
{
/** @test */
public function a_user_can_login()
{
$this->assertTrue(true);
}
}
テスト実行
# PHPUnit で実行
vendor/bin/phpunit --filter UserLoginTest
# Pest で実行(Pest テストが生成された場合)
vendor/bin/pest
@covers アノテーションを付与
php artisan make:test OrderServiceTest --cover
生成例
/**
* @covers \App\Services\OrderService
*/
class OrderServiceTest extends TestCase
{
// …
}
これにより PHPUnit のコードカバレッジレポートで対象クラスを自動でリンクします。
よくあるミスと対処
| ミス | 対処 |
|---|---|
tests/Feature に Unit テストが生成される |
--unit フラグを付ける |
| 既存ファイルが上書きされない | --force フラグを付ける |
| Pest テストが作成されない | --pest フラグを付ける |
| テストが自動で検出されない | composer.json の autoload-dev で tests/ が正しく設定されているか確認 |
参考リンク
- Laravel 12.x 公式ドキュメント – Artisan
- Laravel 12.x 公式ドキュメント – make:test
- Pest 公式サイト – テスト
- Artisan Cheat Sheet

