PHPUnitで単体テストを書いてみる
2024.03.12 09:00
2024.03.18 11:16

PHPUnitで単体テストを書いてみました。
フレームワークなどは特に使わないパターンです。
1. インストール
まずはインストールです。コンソールで対象のディレクトリに移動し、
以下を実行します。
※前提としてcomposerが必要なのですが、すでに入っている想定
composer require phpunit/phpunit --dev
composer.jsonができました。
中身はこんな感じです。
{
"require-dev": {
"phpunit/phpunit": "^10.5"
}
}
同時にvendorフォルダもできて、ライブラリはすべてそこに入っているようですね。
ちゃんと動くか確認してみます。
vendor/bin/phpunit --version
PHPUnit 10.5.12 by Sebastian Bergmann and contributors.
こんな感じでちゃんと動きましたね。
2. テストを書く
実際にテストを書いてみます。
まずはテスト対象のクラス。
// Hoge.php
<?php
class Hoge {
public function hoge(string $value): bool
{
if($value !== '') {
return true;
} else {
return false;
}
}
}
次にコレのテストです。
「test」ディレクトリを作って、その中に「HogeTest.php」作ります。
「クラス名+Test.php」ってのはルールっぽいですね。
// HogeTest.php
<?php
use PHPUnit\Framework\TestCase;
// テストしたいクラスをインポート
require_once './Hoge.php';
class HogeTest extends TestCase
{
// ---------------------------------------------------------------------
// 準備
// ---------------------------------------------------------------------
private $testClass;
public function setUp() :void{
// 必ず親クラスのsetUpを呼んでおくこと
parent::setUp();
// テスト対象のクラスインスタンスを作成
$this->testClass = new Validation();
}
// ---------------------------------------------------------------------
// メソッドテスト
// ---------------------------------------------------------------------
public function test_check_true()
{
$result = $this->testClass->hoge('test');
$this->assertTrue($result);
}
public function test_check_false()
{
$result = $this->testClass->hoge('');
$this->assertFalse($result);
}
}
実行します。
vendor/bin/phpunit test
OKがでたら無事テストが通りました。
今回は以上です!