2013-08-15 39 views
10

テストケースを異なる設定で複数回実行する方法を探しています。PHPUnitテストケースを複数回実行する

私はデータベースアクセスクラス(数多くのテストメソッド)をテストしていて、 "通常モード"とそれから "デバッグモード"でテストしたいと考えています。どちらのモードも同じテスト結果を生成する必要があります。

テストケースの設定でこれを行う可能性はありますか?または、run()メソッドをオーバーライドしますか? 私はもちろん、二回テストを書きたくはありません:)

はあなたに

編集ありがとう:手に入れました!

public function run(PHPUnit_Framework_TestResult $result = NULL) 
{ 
    if ($result === NULL) { 
     $result = $this->createResult(); 
    } 

    /** 
    * Run the testsuite multiple times with different debug level 
    */ 
    $this->debugLevel = 0; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    $this->debugLevel = 8; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    $this->debugLevel = 16; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    return $result; 
} 

public function setUp() 
{ 
    parent::setUp(); 
    $this->myclass->setOptions('debug', $this->debugLevel); 
} 
+8

テストデータセットを生成する '@ dataProvider'関数を見てください。 – Sven

+0

私は使い方dataProvidersを知っています:)クラスの簡単な設定を変更して、すべてのテストメソッドを再度実行したいだけです。何かが好きです:run(); $ class-> setDebug(true); run(); –

+0

これは通常の場合ではないと思います。元のテストクラスを拡張し、 'setUp()'でその1つのものを変更しようとしましたか?これは、新しいラベルの下にあるすべてのテストコードを継承し、その内容を2回実行する必要があります。 – Sven

答えて

-1

PHPUnitはテストデコレータを提供しています。 documentationには、実際にデコレータを使用する例として繰り返しデコレータがあります。デコレータは、サブクラス化PHPUnit_Framework_TestCaseに依存せずに再利用可能な方法でビヘイビアを実装する完璧な方法です。

関連する問題