レンタルサーバー選びの迷いを解決!全力サポートします

Google or AdMax Promotion (srv)

@assertを使用したPHPUnitのテストコード雛形の作成(phpunit-skeleton-generator+Eclipse)

PHPUnitのテストコードひな形の作成に「skeleton-generator」を使うと、
既存のクラスからメソッドのテストソース(スケルトン・器)を自動作成できます。
さらに@assertにてコメントを定義しておくことで、
メソッド作成時にテストをしたいパターンなどを書き残しておくことができます。
「skeleton-generator」はその@assertパターンのテストコードを自動作成します。

@assertを使用したPHPUnitのテストコードひな形の作成(phpunit-skeleton-generator+Eclipse)

PHPUnitのテストコードひな形の作成に「skeleton-generator」を使う
全体の流れは以下でご紹介していますので、
手順については以下でご確認ください。

ここでは更に「@assert」を利用したテストパターンを、
クラス側に定義しておき後からテストパターンを自動作成する例についてご紹介します。

前回同様、テスト対象とするサンプルプログラム(クラスファイル)は以下のように定義しています。
引数同士を加算して、答えを返すだけの単純なものです。

phpunit-skeleton-generator_st17

テスト対象のクラス・PHPUnitのテストコード雛形の作成(skeleton-generator)

 

「@assert」で定義できるパターン

「@assert」をコメント欄に記載する際に利用できる記載方法は、
ヘルプに以下のように書かれています。

表 16.1 に、サポートされる @assert の種類と、それがどのようなテストコードに変換されるかをまとめました。

表16.1 サポートされる @assert アノテーション

アノテーション 変換後の内容
@assert (...) == X assertEquals(X, method(...))
@assert (...) != X assertNotEquals(X, method(...))
@assert (...) === X assertSame(X, method(...))
@assert (...) !== X assertNotSame(X, method(...))
@assert (...) > X assertGreaterThan(X, method(...))
@assert (...) >= X assertGreaterThanOrEqual(X, method(...))
@assert (...) < X assertLessThan(X, method(...))
@assert (...) <= X assertLessThanOrEqual(X, method(...))
@assert (...) throws X @expectedException X

(抜粋引用)PHPUnit マニュアル – 第16章 雛形ジェネレータ

 

関数(メソッド)を定義した段階で、
コメント欄を利用して、テストを行いたいパターンを設定しておけるのは非常に便利です。

実際に「@assert」を設定してテストコードを作成してみます。

テストコードは以下のように定義しています。

コメント部に記載している@assert部がそれぞれこのメソッドに対する
テストパターンの1つ1つです。

skeleton-generator-with-assert_st01

@assertによる条件記載・@assertによるPHPUnitのテストコード生成

 

skeleton-generatorの実行によるテストコード生成

skeleton-generatorの実行にはクラス名の入力が必要です。
事前に、対象クラス名をコピーしておきます。

skeleton-generator-with-assert_st02

skeleton-generator実行前にクラス名確認・@assertによるPHPUnitのテストコード生成

 

「実行」-「外部ツール」から作成済みのツールを実行します。
尚、これは以下で作成した外部ツールを選択しています。

skeleton-generator-with-assert_st03

skeleton-generatorの実行・@assertによるPHPUnitのテストコード生成

 

ダイアログが表示されますのでクラス名を入力します。

skeleton-generator-with-assert_st04

クラス名の入力・@assertによるPHPUnitのテストコード生成

 

すぐに実行されテストコードが生成されます。
作成されたテストコードは以下のようになりました。

「phpunit-skeleton-generator」を使う場合の流儀に従って、
※フォルダの移動とライブラリの読み込み指定行っています。
※また5行目は手動で挿入しています。

skeleton-generator-with-assert_st05

生成されたテストコード・@assertによるPHPUnitのテストコード生成

 

それぞれのテストパターンに従ってソースが作成されていますので、
実際にテストを実行します。

テストコードを選択した状態で「MakeGood」タブを選択し、
「再生」アイコンの実行をクリックします。

skeleton-generator-with-assert_st06

フォルダ移動とソース確認・@assertによるPHPUnitのテストコード生成

 

実行後はコンソールにテストの実行結果が表示されます。

skeleton-generator-with-assert_st07

テスト実行後の結果・@assertによるPHPUnitのテストコード生成

 

MakeGoodタブでもグリーンバーによる全テスト成功と
「成功:8」と成功数が表示されています。

skeleton-generator-with-assert_st08

実行結果MakeGoodタブ・@assertによるPHPUnitのテストコード生成

 

「TestOutline」タブではメソッドごとのテスト結果が一覧で見られます。

skeleton-generator-with-assert_st09

TestOutlineタブ・@assertによるPHPUnitのテストコード生成

 

プロモーション

Google or AdMax Promotion (srvpos)

テストがエラーの場合の確認

今回はテストが予定通りの結果を返し、
すべて成功していますが、エラーをあえて発生させます。

以下では、1+2の結果を32としてエラーを生成します。
実行すると、testAdd()メソッドでエラーとなり、テスト失敗表示となります。

対象メソッドの部分にも「×」が表示されています。

skeleton-generator-with-assert_st10

テストエラー作成と実行結果・@assertによるPHPUnitのテストコード生成

 

このようにメソッドを書いているタイミングで、
コメント欄にテストさせたいパターンをコメント記述しておくことで、
メソッドの作成後に想定パターンのテストを自動生成することができ、便利です。

 


AdMax Promotion

公開日:

コンテンツナビ
すべて展開 | すべて省略

AdMax Promotion

カテゴリ
すべて展開 | すべて省略

QRコードからもこのURLを開けます。