PHPUnit入門の入門

◼︎ 目次

  1. 概要
  2. ユニットテストとは
  3. PHPUnitとは
  4. PHPUnitのメリット
  5. 実際に触ってみる
  6. 参考

◼︎ 概要

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 {

}

空なので失敗扱いされる
phpunit1
もう少しちゃんと書いてみる

<?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になっている
phpunit2

assertEqualsとはアサーションのひとつで2つの変数が等しくない場合にエラーを出す
他にも沢山のアサーションがあるが詳しくはこちら:付録A アサーション

コードカバレッジも出せるがXdebugやtokenizerが必要みたいなのでまた別の機会に調べる

◼︎ 参考


Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です