2012-12-05 6 views
9

を変更する方法を私は簡単に任意の非常に長いテストの承知しているように、strictモードで私のユニットテストを実行し続けるしたいのですが、同時に1秒のデフォルトのタイムアウトではありません十分な。すべてのテストで変更することはできますか?私は@short/@medium/@long注釈を使って各クラス(および個々のテスト)のタイムアウトを設定できることを知っていますが、すべてのテストでそのようなものがありますか?おそらくphpunit.xmlにありますか?PHPUnitのstrictモード - デフォルトのタイムアウト

これはたまに起こるPHP_Invoker_TimeoutException: Execution aborted after 1 secondを避けるためです。

+0

可能な重複:http://stackoverflow.com/questions/10520464/what-does-phpunit-strict-mode- do – Smar

+0

私はそれを見てきましたが、PHPUnitのソースコードを編集することなく、この設定をグローバルに変更する方法には答えません。 –

+0

phpunit.xmlからしか実行できません。私が知る限り、PHPUnitのグローバル設定ファイルはありません。 – Smar

答えて

25

オプションがphpunit.xmlに希望時間を設定することで有効にすることができます。時間は秒です。

例:modern PHPUnit versionsは、任意のより多くのこれらのタイムアウトを行う、とも変化しません:

<phpunit 
    strict="true" 
    timeoutForSmallTests="1" 
    timeoutForMediumTests="5" 
    timeoutForLargeTests="10" 
> 
// test suites 
</phpunit> 

テストは

/** 
* @medium 
*/ 
public function testTestThing() { 
    $this->assertTrue(false); 
} 

EDITを以下のように、実際のテスト機能をマークすることにより、中規模または大規模であることをマークすることができます一般に、各事previously covered by strict modeに別々のフラグを導入することにより、厳密なモードの動作:

beStrictAboutTestsThatDoNotTestAnything="true" 
checkForUnintentionallyCoveredCode="true" 
beStrictAboutOutputDuringTests="true" 
beStrictAboutTestSize="true" 
beStrictAboutChangesToGlobalState="true" 

関連しない警告:パスが現在の作業ディレクトリに対して相対的であるという古いデフォルトとは対照的に、XML設定のパスへのパスもXML設定ファイルに対する相対パスに変更されます。

5

また、あなたがこのようなあなたのsetUp()メソッドの中でも、それらを設定することができます。

$this->getTestResultObject()->setTimeoutForSmallTests(1); 
$this->getTestResultObject()->setTimeoutForMediumTests(5); 
$this->getTestResultObject()->setTimeoutForLargeTests(10); 
関連する問題