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

どうもありがとう。

Source: https://habr.com/ru/post/J70046/


All Articles