◼︎ 概要
PHPUnitについて入門の入門としてまとめます
ユニットテストやPHPUnitの概要からメリット、インストール方法や使い方など軽くまとめます
◼︎ ユニットテストとは
ユニットテスト(単体テスト)とはクラスや関数などプログラムを構成する小さな単位(ユニット)で個々の動作を確認するためのテスト
◼︎ PHPUnitとは
PHPでの単体テストをテストするツールである
名前の通りPHPで記述する
◼︎ PHPUnitのメリット
- クラス、関数単位で動作を確認できる
- コマンドで楽に実行できる
- Jenkinsと連携して自動化できる
- PHPUnitを見てソースコードの挙動がわかったりする
- テスト効率が向上するので精神的にゆとりができる
- テストをしていることで品質を確保することができる
◼︎ 実際に触ってみる
インストール方法
$ wget https://phar.phpunit.de/phpunit.phar $ chmod +x phpunit.phar $ sudo mv phpunit.phar /usr/local/bin/phpunit $ phpunit --version PHPUnit 5.2.9 by Sebastian Bergmann and contributors.
ソースコードをとりあえず用意する
<?php /** * 四則演算を行うクラス */ class Arithmetic { /** * 足し算 */ public function add($x, $y) { return($x + $y); } /** * 引き算 */ public function subtract($x, $y) { return($x - $y); } /** * 掛け算 */ public function multiply($x, $y) { return($x * $y); } /** * 割り算 */ public function divide($x, $y) { return($x / $y); } }
このソースコードのテストスクリプトを用意する
最初なので空のテストを実行させる
<?php require_once 'Arithmetic.php'; class ArithmeticTest extends PHPUnit_Framework_TestCase { }
空なので失敗扱いされる
もう少しちゃんと書いてみる
<?php require_once 'Arithmetic.php'; class ArithmeticTest extends PHPUnit_Framework_TestCase { /** * @var Arithmetic */ protected $object; /** * setUpは各テストメソッドが実行される前に実行する */ protected function setUp() { // テストするオブジェクトを生成する $this->object = new Arithmetic(); } /** * 足し算関数の検証 */ public function testAdd() { // 引数に3,5を渡すと8が返ってくることを確認する $this->assertEquals(8, $this->object->add(3, 5)); // 引数に15,30を渡すと45が返ってくることを確認する $this->assertEquals(45, $this->object->add(15, 30)); } /** * 引き算関数の検証 */ public function testSubtract() { // 引数に10,3を渡すと7が返ってくることを確認する $this->assertEquals(7, $this->object->subtract(10, 3)); // 引数に3,9を渡すと-6が返ってくることを確認する $this->assertEquals(-6, $this->object->subtract(3, 9)); } /** * 掛け算関数の検証 */ public function testMultiply() { // 引数に4,6を渡すと24が返ってくることを確認する $this->assertEquals(24, $this->object->multiply(4, 6)); // 引数に4,-5を渡すと-20が返ってくることを確認する $this->assertEquals(-20, $this->object->multiply(4, -5)); } /** * 割り算関数の検証 */ public function testDivide() { // 引数に6,2を渡すと3が返ってくることを確認する $this->assertEquals(3, $this->object->divide(6, 2)); // 引数に6,6を渡すと1が返ってくることを確認する $this->assertEquals(1, $this->object->divide(6, 6)); } }
今回はOKになっている
assertEqualsとはアサーションのひとつで2つの変数が等しくない場合にエラーを出す
他にも沢山のアサーションがあるが詳しくはこちら:付録A アサーション
コードカバレッジも出せるがXdebugやtokenizerが必要みたいなのでまた別の機会に調べる
コメントを書く
コメント一覧