PHPUnit入門の入門

Published: 2016年2月25日 by tomsato

◼︎ 概要

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が必要みたいなのでまた別の機会に調べる

◼︎ 参考

Share

最近の投稿

NetlifyのSplit TestingとFunctionsについて使い方をまとめる Split TestingはGitHubのブランチをベースにしたA/Bテストを行うための機能のことで、FunctionsはNetlifyでAWS Lambdaを使うことができる

NetlifyとはHTMLなどの静的コンテンツのみで構成されたWebサイトを閲覧できる形で配信するWebサービス GitHubやBitbucket、GitLabなどと連携して使うことができて、リポジトリにプッシュすることで自動でCI/CDを行うことができる、無料枠が豊富で独自ドメインを設定可能

WordPressからJekyll(GitHub Pages)に移行した手順をまとめる。 お金的な事情や使いやすさなどの理由で無料のJekyll+GitHub Pagesに移行した。JekyllとはMarkdown等から静的ページを生成する静的サイトジェネレータ

Scala開発のためにScalaらしさをまとめる 言語設計者の設計思想を元にScalaらしさについてまとめる オブジェクト指向と関数型の融合について

StorybookとはUI開発環境を提供するツール React、React Native、Angular、Vueなどをサポートしている ユーザーは独立した開発環境でコンポーネントを個別に作成して挙動の確認をテストできたり、コンポーネントを一覧にしてカタログ化できるので他の人に紹介する時に使えたりする

カテゴリ一覧

タグ一覧