PHPUnit + Netbeans

こんにちは。



実際のシステムで使用する前に、システムの各モジュールをテストする必要があることは周知の事実です。



これにより、新しいバグ、クリティカルホールなどのリスクが軽減されます。



大規模なオフィスには、 ユニットテストの作成に携わっている特別な人がいます



小規模オフィス、フリーランサーはこれを犯し、小規模プロジェクトではこれは必ずしも必要ではありません。 クラスの長さが100行の場合、200行のテストを書くのは時間の無駄のようです。



それにもかかわらず、誰が必要とするのか、誰が必要とするのかについては詳しく説明しません。



便利なGUIを使用してNetBeansでテストコードをクールにする方法を示したいと思います。





これはPHPUnitのすべての機能のマニュアルではないことをすぐに言いますが、この記事では概要を簡単に説明します。



したがって、NetBeansからは、6.7でコードをテストする機能が追加されたようです...正確なバージョンは覚えていません-ビンのWebサイトを見てください。



テストクラスの作成は、数回クリックするだけで実行されます。



しかし、すべて順番に。



テストするには、次のものが必要です。

  1. NetBeans自体
  2. Phpunit
  3. 整理したい


PHPUnitをインストールする



PHPUnitのインストールはPEARを通過します。



マニュアルはこちらです。





これで問題はないと思います。

テストするクラスの作成に移りましょう。



そして、計算機をテストします。 はい、はい、古典的な例です。



したがって、クラスは次のようになります。

 <?php class calc { /** *    . * * @var Double */ protected $last; /** *   . * * @param Double $a * @param Double $b * @assert (1,2) == 3 * @assert (10,10) == 20 * @assert (1,0) == 1 * @assert (0,0) == 0 */ public function sum($a, $b) { $this->last = $a+$b; return $this->getLast(); } /** *   $a   $b * * @param Double $a * @param Double $b * @return Double * @assert (6,3) == 2 * @assert (10,5) == 2 * @assert (15,3) == 5 * @assert (15,0) == 0 */ public function div($a,$b) { if ( $b==0) throw new Exception("Division by zero"); $this->last = $a/$b; return $this->getLast(); } /** *     * * @return Double */ public function getLast() { return $this->last; } /** *  * * @param double $a * @param double $b * @return double * @assert (1,2) == -1 * @assert (10,2) == 8 * @assert (15,2) == 13 * */ public function minus($a, $b) { $this->last = $a-$b; if($a<$b) $this->last=0; //       (!!) return $this->getLast(); } /** * * @param double $a * @param double $b * @return double * @assert (10,20) == 200 * @assert (1,20) == 20 * @assert (4,-3) == -12 * @assert (10,0) == 0 */ public function umnojenie($a,$b) { $this->last = $a*$b; if( $this->last == 0 ) $this->last=1; //  return $this->getLast(); } /** *    * * @param double $a * @param double $b * @assert (1,2) == 1 * @assert (3,2) == 9 * @assert (10,-1) == 0.1 * @assert (10,0) == 1 * @assert (0,0) == 0 */ public function power($a, $b) { $this->last = pow($a,$b); } } ?>
      
      





このクラスでは、操作について説明しました。

phpdocスタイルで文書化されています。



このクラスでは特別に認められています。

特に、powメソッドは値を返しません。 返品を忘れました。



assertとは何ですか?

assertは、私たちが何を与え、何を出したいかを事前に示すことができます。

つまり、テストクラスを作成するときに、PHPUnitはそのようなassertごとにテスト関数を作成します。

便利-時間を節約できます。



テストクラスの作成に移りましょう。



次に、texクラスを作成する必要があります。

NetBeansでは、2回のクリックでこれを行うことができます(!)





クラスを保存する場所を最初に尋ねられたとき。

プロジェクト内のフォルダーを選択します。たとえば、私にとってはこれがテストフォルダーです。

次に、作成されたクラスを含むウィンドウが表示されます。

使用されたアサートメソッドの数に応じて 、図のように判明しました。





すべてのテスト方法には、「test」というプレフィックスが付きます。

setUp、tearDownメソッドは、各テストの開始前後に呼び出されます!

つまり、それらの中で、何かに接続したり、何か他のことを実行したりすることができます。一般的には、作業を成功させるために接続されているすべてのものです。



SHIFT + F6テストを開始します。

写真に示すように何かを得る必要があります。





各テストが完了し、60%成功したことがわかりました。



リターンがないため、すべてのテストが電源障害であることがわかります。

修正中です。

 public function power($a, $b) { $this->last = pow($a,$b); return $this->getLast(); }
      
      







成功したテストの80%を受け取ります。





受信したエラーを修正します。

testDiv4-キャッチされない例外をスローします。 テストでこれをキャッチする必要があります。

これを行うには、パブリック関数testDiv4メソッドの前に

追加する必要があります

@expectedExceptionアノテーション。



つまり、次のように記述します。

 /** * Generated from @assert (15,0) == 0. * @expectedException Exception */ public function testDiv4() { $this->assertEquals( 0, $this->object->div(15,0) ); }
      
      







したがって、例外を予期していることをPHPUnitに伝えます。



さらに、testMinus関数は、0未満の応答を返すことを強制的に禁止しました。

修正します。



umnojenieメソッドでも同じことを行います。

 /** *  * * @param double $a * @param double $b * @return double * @assert (1,2) == -1 * @assert (10,2) == 8 * @assert (15,2) == 13 * */ public function minus($a, $b) { $this->last = $a-$b; return $this->getLast(); } /** * * @param double $a * @param double $b * @return double * @assert (10,20) == 200 * @assert (1,20) == 20 * @assert (4,-3) == -12 * @assert (10,0) == 0 */ public function umnojenie($a,$b) { $this->last = $a*$b; return $this->getLast(); }
      
      







つまり、テストに合格するはずです。



新たに始めます。

ローンチ後、95%が合格となります。



最後の4パーセントはtestPower5に割り当てられます。

なんで? assertの記述間違っていたため

そして、pow(0,0)== 1であり、0が期待されます。

したがって、1に変更して開始します。



20のテストに合格。

100%合格。



すべてが素晴らしい!



最後に、例を作成します。

5 * 5 + 5 = 30。



 public function testClass() { $this->assertEquals(30, $this->object->sum( $this->object->umnojenie(5, 5), 5)); }
      
      





OKを開始します。



他にどのようなチェックがありますか



この例では、プリミティブassertEqualsが使用されます。

しかし、さらに多くの異なる方法があります。



ここにロシア語の簡単な説明があります: habrahabr.ru/blogs/php/56289



-次回は、データベース、ファイルを操作するより複雑な例のレビューが行われます。



私のブログの記事-anton.in.ua/2009/09/18/phpunit-netbeans



どうもありがとう。




All Articles