我正試圖學習使用PHP進行單元測試。我知道這對於剛剛進入PHP單元測試的人來說有點過頭了。無論如何,這是這樣的情況:如何測試產生二進制文件的函數?
function doresize(&$mp3file)
{
global $tmpdir, $mp3info, $ffmpeg;
if(dirname($mp3file) != $tmpdir)
{
copy($mp3file , $tmpdir . '/' . $mp3file);
$mp3file = $tmpdir . '/' . $mp3file;
}
$mp3filenew = basename($file, '.swf') . "_new.mp3";
$command2 = "$mp3info -x \"$mp3file\" 2> /dev/null";
exec($command2, $buffer);
$mp3length = getLengthFromBuffer($buffer);
debug(" \$mp3length: $mp3length");
$lengthTranslated = roundLengthToSeconds($mp3length);
$maxlength = floor($lengthTranslated/2);
$halfmaxlength = floor($maxlength/2);
$start = rand($halfmaxlength, $maxlength);
$command3 = "$ffmpeg -y -acodec copy -ss $start -t $maxlength -i \"$mp3file\" $mp3filenew 2> /dev/null";
exec($command3);
@unlink($mp3file);
rename($mp3filenew, $mp3file);
}
從上面的代碼,我應該添加什麼樣的代碼在測試用例?
僅供參考:以上代碼用於將mp3文件剪切一半。
那麼,單元測試更有可能適用於面向對象編程,即:您有一個類,並使用斷言來測試您的對象。在這種情況下,你有一個功能,你想單元測試。我建議你有一個這樣的課程,並使用PhpUnit。 – DarthVader 2009-11-02 02:21:00
將此片段轉換爲類很容易,我只是不知道如何檢查生成的文件。 – ariefbayu 2009-11-02 02:32:53
我不同意單元測試適合OOP而不是結構(在這種情況下是函數)。單元測試是簡單的本地測試。像許多其他測試一樣,單元測試簡單地將預定義輸入的輸出與該輸入的預期輸出進行比較。這對於面向對象的結構,功能,聲明性,邏輯編程都是適用的。只是我2美分。 – NawaMan 2009-11-02 03:01:00