PHPUnitはxUnitから派生しているため、xUnitはそれを実行します。
なぜxUnitはそれをそのようにするのですか?よろしくお願いします。Robertが指摘するように、元々の理由は、xUnitがSmalltalkに由来し、JavaのJUnitによって普及したことです。どちらもOO-or-nothing言語であるため、選択の余地はありませんでした。
これは、他の利点がないということではありません。OOテストは継承できます。これは、サブクラスをテストする場合は、すべての親のテストを実行し、変更した動作のいくつかのテストメソッドをオーバーライドできることを意味します。これにより、テストコードを複製することなく、サブクラスの優れたカバレッジが得られます。
PHPUnitでassertメソッドを簡単に追加およびオーバーライドできます。サブクラスPHPUnit_Framework_TestCase
を作成し、独自のassert
メソッドを作成して、テストクラスに新しいサブクラスを継承させます。setup
デフォルトとteardown
メソッドを作成することもできます。
最後に、テストフレームワークのメソッドがテスト対象のものと衝突しないことを保証します。テストフレームワークがその関数をテストにダンプしたばかりで、メソッドを持つものをテストしたいsetup
場合は...問題が発生しています。
そうは言っても、あなたの痛みが聞こえます。大きなテストフレームワークは、煩わしく、面倒で、もろい場合があります。PerlはxUnitスタイルを使用せず、短いテスト関数名を持つ手続き型スタイルを使用します。例については、 Test::Moreを参照してください。舞台裏では、あなたが提案したとおりに動作します。すべての関数が使用するシングルトンテストインスタンスオブジェクトがあります。Test::Classと呼ばれるOOテストメソッドモジュールを備えたハイブリッドプロシージャアサーション関数もあります。これは両方の長所を発揮します。
PHPの構文がメソッドの呼び出しに非常に醜いことを考えると
私はあなたが好きではないと思います->
。私はあなたがそれと一緒に暮らすことを学ぶことをお勧めします。OO PHPは、他の方法よりもはるかに優れています。