自動テストの重要性
コードを書き換えた後、再テストには大きな労力がかかる。 => 自動テストという仕組みが役に立つ。
参考書籍に則り、PHPUnitという自動テストツールを使用する。
他にも様々なツールがあるみたい。
PHPUnitのインストール
PHPUnitのインストール
composer require --dev phpunit/phpunit
テストの書き方
- PHPUnitに用意されてる TestCaseを継承したクラスを作成する必要がある。
- クラス名、ファイル名はTestで終わる必要がある。
- テストの成功か、失敗かはメソッド内に書かれたassertOOメソッドが真を返すかどうかで決まる。
実行
ファイル名: MyTest.php
require_once dirname(__FILE__) . '/vendor/autoload.php';
use PHPUnit\Framework\TestCase;
class MyTest extends TestCase
{
// テスト処理
public function test1()
{
$array = [1, 5, 10];
// 配列($array)の要素数が3つであることをテストする。
$this->assertCount(3, $array);
}
public function test2()
{
$num1 = 1;
$num2 = 1;
// 2つの値が型も含めて等しいことをテストする。
$this->assertSame($num1, $num2);
}
public function test3()
{
$text = "hello";
// 値が空であることをテストする。
$this->assertEmpty($text);
}
}
実行
./vendor/phpunit/phpunit/phpunit MyTest.php
実行結果
PHPUnit 9.5.0 by Sebastian Bergmann and contributors.
..F 3 / 3 (100%)
Time: 00:00.008, Memory: 4.00 MB
There was 1 failure:
1) MyTest::test3
Failed asserting that a string is empty.
/Users/kona/PHPUnitApp/MyTest.php:31
FAILURES!
Tests: 3, Assertions: 3, Failures: 1.
↑の実行結果は2つが成功し、1つが失敗している。
2行目が結果を示している。
- 「.」が成功
- 「F」が失敗
- 「E」がエラー
- 「R」がリスク
- 「S」がスキップ
- 「I」が不完全
おまけ(エイリアスの作成)
エイリアスを作成して楽しよう
alias phpunit="./vendor/phpunit/phpunit/phpunit"
以降、
phpunit MyTest.php
で実行可能。