单元测试原理简析
我们稍微剖析单元测试的原理,从最简单的例子剖析它的机制。
假设我们有这样一个加法函数:
/*** 求两个数的和
* @param $a int 输入值
* @param $b int 输入值
*/
function add($a, $b)
{
return $a + $b;
}
在上线之前,我们要测试该函数功能是否达到期望。
没有用单元测试前,我们会写类似这样的测试代码:
// 测试代码,如果输出3说明函数功能OKecho add(1, 2);
// 为了更确切些,我们可能多写几个测试
echo add(0, 5);
echo add(100, -99);
有时候为了查看实际值和期望值,我们会把两个值都打印出来,
$expect = 3;$result = add(1, 2);
if ($result != $expect) {
echo '期望输出:’, $expect, ’,实际输出:', $result;
}
我们发现,这种判断方式其实可以重用。
于是,我们把它写成一个函数:
/*** 判断两个值是否相等
* 如果不相等,输出提示信息并中断执行
* 如果相等,不输出任何信息
* @param $expect mixed 期望的值
* @param $real mixed 实际的值
*/
function isEquals($expect, $real)
{
if ($expect != $real) {
echo '期望输出:', $expect, ',实际输出:', $real;
exit();
}
}
这样,我们在使用的时候,就不用每次都写if和echo语句,变成:
isEquals(3, add(1, 2));isEquals(5, add(0, 5));
isEquals(1, add(100, -99));
这就是单元测试的原理。
判断一个方法的输出是否为预期结果,如果是,则继续执行其他判断;如果不是,输出预期值和实际值。
PHPUnit里面有大量这种判断方法,并起了个专用名词:断言(英文assert)。
断言其实就是判断,判断某个方法的输出是否等于(或者不等于)期望的值。
如果是,则不输出任何信息;
如果不是,说明给定方法没有实现预期的功能,PHPUnit就会输出提示信息。
PHPUnit中的assertEquals()就和我们上面实现的isEquals()一样,判断两个值是否相等。
在PHPUnit这样用:
assertEquals(3, add(1, 2));
这就是单元测试的基本原理了
以上是 单元测试原理简析 的全部内容, 来源链接: utcz.com/z/326179.html