開発におけるテストの自動化ツールとしてPHPUnitを使ってみます。
PHPUnitのインストールや環境などは既に揃っているものだとします。
テストの目的
・想定通りの操作をするか
・デグレしないか
まあいろいろあると思いますがテストなんてしないよりした方がいいですよね。
作るのは面倒かもしれませんが自動化できるところは自動化しておけば人がテストするよりも楽で結果的に速くなるという考え方もうなずけます。
注意点としては初めは難しいと思うのでちょっとずつ書くこと。
完璧を意識しすぎないこと(挫折する可能性大)
早速簡単なテストコードを書いてみたいと思います。
今回は半角英数のバリデーションが意図通りの操作をしてくれるかテストをしたいと思います
テストする関数
function isAlphanumeric($string){ return preg_match("/^[a-zA-Z0-9]+$/", $string); }
PHPUnit_Framework_TestCaseを継承したクラスがテストクラスになります。
テストするメソッドは「test」から始めるようにします。
OKなケースとNGなケースを書きます。
class hogeTest extends PHPUnit_Framework_TestCase { public function testIsAlphanumeric() { // OK $strings = array("aaa", "aB12", "fd9fasyf7","fawiefawb23r9y"); foreach ($strings as $string) { $this->assertEquals(1, isAlphanumeric($string)); } // NG $strings = array(null, "", "あああ", "カキク", "…", "@", "s", ":@[]\/.", "金", "AAあ"); foreach($strings as $string) { $this->assertEquals(0, isAlphanumeric($string)); } }
assertEquals(x, y)
→第一引数(x)と第二引数(y)が等しいかどうかを調べてくれるメソッドです。
さてテストが書けたので実行します。
phpunit hogeTest.php
結果は以下の通り。
1つのテストを実行し計14個の検証が行われOKとでました。めでたしです。