phpunit 基本的な使い方

簡単なサンプルを作りながらphpunitの基本的な使い方を学ぶ.
概要は次の通り.

PHPUnit を使ってできること

PHPUnitを使うと, 自分が作ったメソッドが期待通りの値を返すかどうかを機械的にチェックできる.
期待値はこちらで用意する必要がある.

ディレクトリ構成

基本的には次の2ディレクトリにphpファイルを作りながら動作を確認してゆく.

  • app
    • メイン処理を行うファイルを格納するディレクトリ
  • tests
    • テスト用ファイルを格納するディレクトリ

テスト用ファイル 書き方

どうやらクラス名命名規則等にルールがあるらしい.
公式ドキュメントの↓このページが参考になる.

このドキュメントにはクラス名命名規則や継承するクラスについて書かれている.
書き方をざっくりまとめる.

ここでは次のファイルを例に考える.

  • app
    • message.php
      • getMessage() をメソッドとして持つ
  • tests
    • messageTest.php

PHPUnitの書き方のルールは次の通り.

  1. クラス名
    • Message という名前のクラスをテストしたいときは, テスト用ファイルのクラス名を messageTest とする.
  2. 継承しなきゃいけないクラス
    • PHPUnit\Framework\TestCase
      • c.f.) use PHPUnit\Framework\TestCase;
  3. メソッド名
    • test* という名前のパブリックメソッド
      • c.f.) public function testMessage() { xxx }
  4. PHPUnitで用意されているテストメソッド
    • テストメソッドを利用して, 期待値と実際の値が等しいことをチェック
    • c.f.) assertEquals()

とりあえず動かしてみる

とりあえず動かしてみる.
作成するファイルは次の通り.

  • app
    • message.php
  • tests
    • messageTest.php

テストを実行してみる.

これでテストが通ったことになる.

ちょっと失敗させてみる.
次のファイルを変更.

いまさらだが, assertEquals() の使い方は公式ページを参照↓

テスト実行.

うん.
ちゃんと失敗してるね.
この出力結果の見方は追々確認してゆく.

四則演算のテストをやってみる

ここでは四則演算のテストをやってみる.
参考にさせて頂いたサイトはこれ↓.

ここでは新しく setUp() メソッドを利用する.

PHPUnit は、準備用のコードの共有をサポートしています。
各テストメソッドが実行される前に、setUp()
という名前のテンプレートメソッドが実行されます。
setUp() は、テスト対象のオブジェクトを生成するような処理に使用します。

第4章 フィクスチャ | phpunit

要するに, setUp() メソッドは, 各テスト実行前に何かしたい時に使えば良いってこと.

早速ファイルを作ってゆく.
作成するファイルは次の通り.

  • app
    • arithmetic.php
  • tests
    • arithmeticTest.php

本当は divide()0 で割ったときの例外処理を書いたほうがいいんだろうけど,
今回は話を簡単にするためにスキップ.

テスト実行.

Failしてる.

↑このメッセージからFail箇所を特定する.

  • .F.. 4 / 4 (100%)
    • 全部で4つのメソッドが実行された
    • そのうち2番目のメソッドでfailした
  • Tests: 4, Assertions: 11, Failures: 1.
    • 全 4 メソッド がテストされた
    • assertion は 11個 実行された
    • 1つが fail した
  • /vagrant/tests/arithmeticTest.php:31
    • 31行目が怪しいよ
    • Failed asserting that 1 matches expected -1.
      • 期待値 -1 に対して 実際は 1 が返ってきてるよ

この指摘はその通り.
0 - (-1) = 1 だから.
この箇所を直せばテストがパスする.

ok.

以上でテストの基礎については完了.

スポンサーリンク
336 x 280 – レクタングル(大)
336 x 280 – レクタングル(大)
  • このエントリーをはてなブックマークに追加

この記事が気に入ったら
いいね!しよう

スポンサーリンク
336 x 280 – レクタングル(大)
トップへ戻る