2011-07-20 4 views
1

私は、一連のコマンドのパフォーマンスをチェックしているテストスクリプトを構築しています。テストスクリプトは、テストに失敗する前に特定の時間実行させる必要があります。PHPUnitパフォーマンス/テストタイムアウト

PHPUnitのドキュメントのWebサイトでPerformanceTestCaseが見つかりましたが、私はそれを使用しようとしたときに、新しいバージョンには含まれていない古い機能だと分かりました。 (そのドキュメントはPHPUnit 3.0で、私のバージョンは3.5です)。

PHPUnit 3.5には、この機能に相当するものはありますか?どのように使用しますか?

答えて

1

私は今日、賢明な問題に遭遇しました。私は、割り当てられた時間内に外部HTTPコールが発生したことをテストする必要がありました。

よりもむしろ別のループを構築したり、$開始し、$終了時間の測定値を取る - 私はここhttp://www.php.net/manual/en/function.stream-get-meta-data.php

while (!feof($fp)) { 
    $info = stream_get_meta_data($fp); 
    if ($info['timed_out']) { 
     $this->timed_out = true; 
     fclose($fp); 
     throw new Exception("Request timed out"); 
    } 
    else { 
     $response .= fgets($fp, 128); 
    } 
} 
fclose($fp); 
詳細に、TIMED_OUTのPARAMを暴露
7

さて、あなたは、単にこれはあなたのコマンドが終了される前に中断されないことを意味します。もちろん、

public function testFoo() { 
$tStart = microtime(true); 
// your time critical commands 
$tDiff = microtime(true) - $tStart; 
$this->assertLessThan($maxTime, $tDiff, 'Took too long'); 
} 

ような何かを行うことができます。

IMO単位テストは、パフォーマンスをテストするためのものではありません。