カテゴリ: Laravel 更新日: 2026/02/21

Laravelでテストファイルを作成する方法(make:testコマンド)

Laravelでテストファイルを作成する方法(`make:test`コマンド)
Laravelでテストファイルを作成する方法(`make:test`コマンド)

先生と生徒の会話形式で理解しよう

生徒

「Laravelでテストファイルを作るにはどうすればいいんですか?」

先生

「Laravelには、テストファイルを簡単に作成できる便利なコマンドが用意されています。make:testコマンドを使えば、すぐにテストを始められますよ。」

生徒

「コマンドって難しそうですが、初心者でも使えますか?」

先生

「はい、とても簡単です。それでは、テストファイルの作成方法を一つずつ見ていきましょう!」

1. make:testコマンドとは?

1. make:testコマンドとは?
1. make:testコマンドとは?

Laravelのmake:testコマンドは、テストファイルを自動的に作成してくれる便利な機能です。artisan(アーティザン)と呼ばれるLaravelの開発支援ツールの一つで、面倒なファイル作成作業を一瞬で完了させることができます。

例えるなら、料理のレシピ帳を作るときに、最初から白紙のノートに書くのではなく、あらかじめ項目が印刷されたテンプレートを使うようなものです。必要な部分だけを埋めればよいので、作業がとても楽になります。このコマンドを使えば、テストに必要な基本的なコード構造が自動的に用意されるため、初心者でもすぐにテストを書き始めることができます。

artisanコマンドは、コマンドライン(ターミナルやコマンドプロンプト)という黒い画面から実行します。パソコンに文字で命令を伝える方法で、慣れないうちは難しく感じるかもしれませんが、何度か使ううちにすぐに慣れてきます。

2. 基本的なテストファイルの作成方法

2. 基本的なテストファイルの作成方法
2. 基本的なテストファイルの作成方法

それでは実際にテストファイルを作成してみましょう。まず、Laravelプロジェクトのルートディレクトリ(プロジェクトフォルダの一番上の階層)でコマンドラインを開きます。Windowsの場合は、プロジェクトフォルダを開いた状態でアドレスバーにcmdと入力してエンターキーを押すと、そのフォルダでコマンドプロンプトが開きます。

次に、以下のコマンドを入力してエンターキーを押します。

php artisan make:test UserTest

このコマンドを実行すると、tests/Feature/UserTest.phpというファイルが自動的に作成されます。コマンドの意味を分解すると以下のようになります。

  • php: PHPプログラムを実行するという意味
  • artisan: Laravelの開発支援ツールを使うという意味
  • make:test: テストファイルを作成するという命令
  • UserTest: 作成するテストファイルの名前

コマンドが成功すると、画面に「Test created successfully」と表示されます。これでテストファイルの準備が完了しました。

3. 作成されたテストファイルの中身

3. 作成されたテストファイルの中身
3. 作成されたテストファイルの中身

make:testコマンドで作成されたファイルを開いてみましょう。テキストエディタやIDEでファイルを開くと、以下のようなコードが自動的に書かれています。

<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;

class UserTest extends TestCase
{
    /**
     * A basic feature test example.
     */
    public function test_example(): void
    {
        $response = $this->get('/');

        $response->assertStatus(200);
    }
}

このコードには、テストを書くために必要な基本構造がすべて含まれています。namespaceはファイルの場所を示し、useは必要な機能を読み込んでいます。class UserTest extends TestCaseの部分は、このファイルがテストクラスであることを宣言しています。

最初からtest_exampleというサンプルのテストメソッドが用意されているので、これを参考にして自分のテストを書くことができます。このサンプルは、ルートURL(トップページ)にアクセスして、HTTPステータスコードが200(正常)であることを確認するテストです。

4. Unitテストファイルの作成方法

4. Unitテストファイルの作成方法
4. Unitテストファイルの作成方法

デフォルトではFeatureテストが作成されますが、Unitテストを作りたい場合は--unitオプションを付けます。Unitテストは小さな機能単位をテストするためのもので、実行速度が速いという特徴があります。

php artisan make:test CalculatorTest --unit

このコマンドを実行すると、tests/Unit/CalculatorTest.phpというファイルが作成されます。Unitテストファイルの中身は以下のようになっています。

<?php

namespace Tests\Unit;

use PHPUnit\Framework\TestCase;

class CalculatorTest extends TestCase
{
    /**
     * A basic unit test example.
     */
    public function test_example(): void
    {
        $this->assertTrue(true);
    }
}

Featureテストとの違いは、継承しているクラスが異なることです。UnitテストはPHPUnit\Framework\TestCaseを継承していて、LaravelのHTTP機能を使わないシンプルな構造になっています。これにより、データベースやルーティングなどの外部要素に依存せず、純粋なロジックだけをテストできます。

5. テストファイルの命名規則

5. テストファイルの命名規則
5. テストファイルの命名規則

テストファイルには決まった命名規則(名前の付け方のルール)があります。この規則を守らないと、テストが正しく実行されないことがあります。

重要な命名規則
  • ファイル名は必ずTestで終わる必要があります
  • クラス名もファイル名と同じくTestで終わります
  • テストメソッド名はtest_で始めるか、@testアノテーションを付けます

例えば、商品機能をテストする場合、ProductTestProductListTestのような名前を付けます。間違ってProductだけにしたり、TestProductのように順序を逆にしたりしないよう注意が必要です。

テストメソッドの名前は、何をテストしているのか分かりやすい名前を付けることが大切です。日本語でも問題ありません。

public function test_商品が正しく登録される(): void
{
    // テストの内容
}

public function test_削除された商品は表示されない(): void
{
    // テストの内容
}

このように具体的な名前を付けることで、テストが失敗したときにすぐに問題箇所を特定できます。

6. 複数のテストファイルを一度に作成する

6. 複数のテストファイルを一度に作成する
6. 複数のテストファイルを一度に作成する

大きなプロジェクトでは、複数のテストファイルが必要になることがあります。一つずつコマンドを実行しても良いのですが、まとめて作成することもできます。

例えば、ユーザー機能に関連する複数のテストを作る場合は、以下のように実行します。

php artisan make:test UserRegistrationTest
php artisan make:test UserLoginTest
php artisan make:test UserProfileTest

また、同じ機能に対してFeatureテストとUnitテストの両方を作りたい場合もあります。その場合は以下のように実行します。

php artisan make:test ProductTest
php artisan make:test ProductTest --unit

ただし、同じ名前でFeatureテストとUnitテストを作ると混乱しやすいので、実際の開発ではProductFeatureTestProductUnitTestのように区別できる名前を付けることをおすすめします。

7. テストファイルの保存場所を確認する

7. テストファイルの保存場所を確認する
7. テストファイルの保存場所を確認する

make:testコマンドで作成されたファイルは、自動的に適切な場所に保存されます。保存場所を理解しておくことで、ファイルを探したり整理したりするのが楽になります。

Featureテスト

tests/Feature/フォルダに保存されます

実際のユーザー操作をテストする機能テスト用

Unitテスト

tests/Unit/フォルダに保存されます

小さな機能単位をテストする単体テスト用

これらのフォルダは、Laravelプロジェクトを作成したときに自動的に作られています。エディタやIDEのファイルツリーから簡単にアクセスできます。テストファイルが増えてきたら、さらにサブフォルダを作って整理することもできます。例えば、tests/Feature/User/tests/Feature/Product/のように機能ごとに分けると管理しやすくなります。

8. 作成したテストファイルを編集する

8. 作成したテストファイルを編集する
8. 作成したテストファイルを編集する

テストファイルを作成したら、実際のテストコードを書いていきます。サンプルのtest_exampleメソッドを削除または編集して、自分のテストを追加しましょう。

例えば、商品一覧ページのテストを書く場合は以下のようになります。

<?php

namespace Tests\Feature;

use Tests\TestCase;
use App\Models\Product;
use Illuminate\Foundation\Testing\RefreshDatabase;

class ProductTest extends TestCase
{
    use RefreshDatabase;

    public function test_商品一覧ページが表示される(): void
    {
        $response = $this->get('/products');
        $response->assertStatus(200);
    }

    public function test_商品が作成できる(): void
    {
        $product = Product::create([
            'name' => 'ノートパソコン',
            'price' => 80000
        ]);

        $this->assertDatabaseHas('products', [
            'name' => 'ノートパソコン'
        ]);
    }
}

このように、一つのテストファイルに複数のテストメソッドを書くことができます。関連する機能のテストをまとめることで、テストファイルが整理されて見やすくなります。各テストメソッドは独立して実行されるため、一つのテストが失敗しても他のテストには影響しません。

9. テストファイル作成時のよくあるエラー

9. テストファイル作成時のよくあるエラー
9. テストファイル作成時のよくあるエラー

make:testコマンドを使う際に、初心者がよく遭遇するエラーとその解決方法を紹介します。

エラー1: コマンドが見つからない

「php artisan command not found」のようなエラーが出る場合は、現在いるディレクトリがLaravelプロジェクトのルートではない可能性があります。cdコマンドでプロジェクトフォルダに移動してから再度実行してください。

エラー2: 同じ名前のファイルが既に存在する

既に同じ名前のテストファイルがある場合、上書きするか確認されます。間違って既存のファイルを消さないよう、別の名前を付けることをおすすめします。

エラー3: 権限エラー

ファイルを作成する権限がない場合にエラーが発生することがあります。Windowsではコマンドプロンプトを管理者として実行するか、MacやLinuxではsudoコマンドを使う必要がある場合があります。ただし、通常は権限の問題が起きないように設定されているはずです。

これらのエラーに遭遇しても慌てずに、エラーメッセージをよく読んで対処しましょう。エラーメッセージには問題の原因と解決のヒントが含まれていることが多いです。

10. テストファイル作成後の次のステップ

10. テストファイル作成後の次のステップ
10. テストファイル作成後の次のステップ

テストファイルを作成したら、実際にテストを実行してみましょう。以下のコマンドでテストを実行できます。

php artisan test

このコマンドを実行すると、testsフォルダ内のすべてのテストが実行され、結果が表示されます。最初は、自動生成されたサンプルテストが成功することを確認できます。

特定のテストファイルだけを実行したい場合は、ファイルパスを指定することもできます。

php artisan test tests/Feature/UserTest.php

テストが失敗した場合は、赤色でエラーメッセージが表示されます。エラーメッセージを読んで、コードを修正してから再度テストを実行します。テストが成功するまでこの作業を繰り返すことで、プログラムの品質を高めることができます。

make:testコマンドを使いこなせるようになると、テスト駆動開発がとても楽になります。新しい機能を追加するたびにテストファイルを作成する習慣をつけることで、バグの少ない高品質なアプリケーションを開発できるようになります。

関連記事:
カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyのルーティングの基本を完全ガイド!YAML・PHP・アノテーションの違いもわかりやすく解説
New2
Laravel
LaravelでAPIのレスポンスをテストする方法を完全解説!assertJsonで初心者も安心
New3
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New4
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.2
Java&Spring記事人気No2
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.3
Java&Spring記事人気No3
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.4
Java&Spring記事人気No4
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説
No.5
Java&Spring記事人気No5
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.6
Java&Spring記事人気No6
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.8
Java&Spring記事人気No8
Laravel
Laravelでコントローラを作成する方法(artisanコマンド)