2011-07-20 110 views
1

我正在構建一個測試腳本,用於檢查一組命令的性能。在測試失敗之前,測試腳本需要讓它運行一段特定的時間。PHPUnit性能/測試超時

我在PHPUnit文檔網站中找到了PerformanceTestCase,但是當我嘗試使用它時,我意識到它的舊功能尚未包含在新版本中。 (該文檔是PHPUnit 3.0,我的版本是3.5)。

PHPUnit 3.5中是否有這個功能的等價物,我該如何使用它?

回答

1

今天我遇到了一個微妙的問題 - 我需要測試外部HTTP調用發生在分配的時間內。

而不是建立另一個迴路或採取$開始和$結束時間讀數 - 我露出TIMED_OUT PARAM,這裏詳細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); 
7

嗯,你可以簡單地做這樣的事情

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

當然,這意味着你的命令將不被完成之前被中斷。

而國際海事組織單位測試並不意味着測試性能。