#19 PHPで学ぶテスト(単体テスト)の基本
PHPで関数を書いた後、それが正しく動くかをブラウザで表示して確認するだけで済ませていませんか?この記事では、PHPで書いたコードを自動でチェックする「テスト」の基本を解説します。
なぜテストを書くのか
コードを修正するたびに、関連する処理が壊れていないかを手作業で確認するのは大変です。テストを用意しておけば、コマンド一つで動作確認ができ、安心してコードを直せるようになります。
PHPUnitを使ったテストの書き方
PHPではPHPUnitというテスト用ライブラリが定番です。Composerでcomposer require --dev phpunit/phpunitと導入できます。
function add($a, $b) {
return $a + $b;
}
use PHPUnit\Framework\TestCase;
class CalculatorTest extends TestCase
{
public function testAdd()
{
$this->assertEquals(5, add(2, 3));
}
}
TestCaseを継承したクラスを作り、メソッド名をtestから始めるのが決まりです。assertEquals(期待値, 実際の値)という順番で書きます。ターミナルで./vendor/bin/phpunitを実行すると結果が一覧表示されます。
異常系もテストしておく
正しい入力だけでなく、境界値(0やマイナスの値など)を渡した時の挙動もテストしておくと安心です。
public function testAddWithZero()
{
$this->assertEquals(0, add(0, 0));
}
PHPならではの注意点
PHPは緩い型変換(文字列の"5"と数値の5を同じものとして扱うなど)が起きやすい言語です。assertEqualsはこの緩い比較をするため、意図せずテストが通ってしまうことがあります。厳密に型まで一致するかを確認したい場合はassertSameを使うと安心です。
まとめ
テストは「正しく動くことを保証する仕組み」であり、安心してコードを修正するための土台になります。assertEqualsとassertSameの違いを意識しながら、少しずつテストを増やしていきましょう。
関連記事
本ページはプロモーションを含みます。
参考書籍(PR)
PHPをもっと学びたい方には「10日でおぼえるPHP入門教室 第4版」がおすすめです。
コメント
コメントを投稿