我正试图学习使用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