LoginSignup
0
0

More than 1 year has passed since last update.

【PHP】PHPUnitの環境構築(インストール→オートロードの設定→テスト実行まで)

Posted at

最近仕事にゆとりができたので、TDD(テスト駆動開発)の勉強として、PHPUnitを使って試そうとしたところ、見事にハマったので備忘録として記載する。

0.環境

MacOS 11.5.2(Big Sur)
php 8.1.2
XAMPP
Composer 2.3.7
※ComposerとはPHPのパッケージ管理システムである。
参考:composerとは

1.ComposerでPHPUnitをインストール

まず、/Applications/XAMPP/xamppfiles/htdocs直下に、TDD用の"phpunit"ディレクトリを作成。
phpunitディレクトリ直下にcomposer.json作成。下記のプログラムを記述し、ターミナルでcomposer updateを実行。インストール後、composer.lockvendorフォルダが追加されている。

composer.json
{
    "require-dev": {
        "phpunit/phpunit": "*"
    }
}

2.オートロードの設定。

今回のテストで使用するサンプルプログラムSample.phpSampleTest.phpを加えたディレクトリ構成は下記のようになる。

phpunit
├ composer.lock
├ composer.json
├ src
  ├ Sample.php
├ test
  ├ SampleTest.php
└ vendor
  ├ autoload.php
  └ composer...etc

Sample.php
<?php
namespace app;

class Sample
{
	public function hello()
	{
		return "Hello";
	}
}
SampleTest.php
<?php
use PHPUnit\Framework\TestCase;
use app\Sample;

class SampleTest extends TestCase
{
    public function test_Hello()
    {
        $sample = new Sample();
        $result = $sample->hello();
        $this->assertEquals("Hello",$result);
    }
}

Sample.phpには'Hello'と表示させる簡易なメソッドを用意する。
SampleTest.phpで、hello()メソッドから表示されたものが、 'Hello 'かをチェックする。
この時、Sample.php``で定義するSampleクラスをSampleTest.phpで使えるようにするために、composer.json```に下記のコードを追加する。

composer.json
{
    "require-dev": {
        "phpunit/phpunit": "^9.5" //インストール後にバージョンの数字が変化
    },

    "autoload": {
        "psr-4": {
            "app\\": "src/"
        }
    }
}

コードを追加したらターミナルで、composer dump-autoloadコマンドを実行する。
これにより、srcディレイクトリ配下を「app」という名前空間にしていし、使用することができる。
参考:composer.jsonのautoloadの書き方参考ページ

3.テスト実行

ターミナルでphpunitディレクトリまで移動し、vendor/bin/phpunit test/を実行。
下記のような結果となり無事成功!

PHPUnit 9.5.21 #StandWithUkraine

.                                                                   1 / 1 (100%)

Time: 00:00.004, Memory: 4.00 MB

OK (1 test, 1 assertion)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0