実際のシステムで使用する前に、システムの各モジュールをテストする必要があることは周知の事実です。
これにより、新しいバグ、クリティカルホールなどのリスクが軽減されます。
大規模なオフィスには、 ユニットテストの作成に携わっている特別な人がいます 。
小規模オフィス、フリーランサーはこれを犯し、小規模プロジェクトではこれは必ずしも必要ではありません。 クラスの長さが100行の場合、200行のテストを書くのは時間の無駄のようです。
それにもかかわらず、誰が必要とするのか、誰が必要とするのかについては詳しく説明しません。
便利なGUIを使用してNetBeansでテストコードをクールにする方法を示したいと思います。
これはPHPUnitのすべての機能のマニュアルではないことをすぐに言いますが、この記事では概要を簡単に説明します。
したがって、NetBeansからは、6.7でコードをテストする機能が追加されたようです...正確なバージョンは覚えていません-ビンのWebサイトを見てください。
テストクラスの作成は、数回クリックするだけで実行されます。
しかし、すべて順番に。
テストするには、次のものが必要です。
- NetBeans自体
- Phpunit
- 整理したい
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
どうもありがとう。