たけるのプログラミング

作ったものとか、気ままにアップします。

【PHP PHPUnit】PHPUnitを使って簡単な単体テストを行う

参考にした記事
PHPUnitでユニットテスト① 導入編 | Points & Lines
1. アサーション — PHPUnit latest Manual



PHPUnitを触ってみた。

PHPUnit単体テスト(ユニットテスト)を行うためのフレームワーク

実際に導入から簡単なテストを行ってみた。

composerが導入されていることを前提としている。

1.PHPUnitのインストール

まずプロジェクトのディレクトリで以下のようなコマンドを実行する。

composer require --dev phpunit/phpunit ^latest

以下のコードを使って、バージョン情報を表示されたらインストール成功。

vendor/bin/phpunit --version  

2.テスト対象のクラスを書く


<?php

namespace app;

class Sample 
{
    public function plus100($num) 
    {
        $num += 100;
        return $num;
    }
}

オートロードを指定するためにnamespaceを記述している。そのためcomposer.jsonでは以下のように記述しておく。

{
    "require-dev": {
        "phpunit/phpunit": "^9.5"
    },
    "autoload": {
        "psr-4": {
            "app\\": "./"
        }
    }
}

3.テストコードを書く

<?php
require_once("vendor/autoload.php");

use PHPUnit\Framework\TestCase;
use app\Sample;

class SampleTest extends TestCase
{
    public function testplus100_1()
    {
        $sample = new Sample();
        
        $result = $sample->plus100(-1);
        
        $this->assertGreaterThan(100,$result);
    }

    public function testplus100_2()
    {
        $sample = new Sample();
        
        $result = $sample->plus100(1);
        
        $this->assertGreaterThan(100,$result);
    }

}

今回使ったアサーションメソッドはassertGreaterThan()

4.テスト実行&実行結果

vendor/bin/phpunit SampleTest.php
F.                                                                  2 / 2 (100%)

Time: 00:00.036, Memory: 4.00 MB

There was 1 failure:

1) SampleTest::testplus100_1
Failed asserting that 99 is greater than 100.

Fはアサーションに失敗した際に表示される。.はテストが成功した際に表示される。
3. コマンドラインのテストランナー — PHPUnit latest Manual

There was 1 failureと書いてあるように、1つ失敗があり、
testplus100_1でアサーションに失敗したよう。


今後はもう少し複雑なテストを書いてみたい。