用PHP进行单元测试

时间:2012-09-17 11:37:04

标签: php unit-testing

我很想知道如何在普通的PHP中使用单元测试来测试我们的代码。

他们的任何指导原则。

当我们使用MVC架构创建网站时,我们如何进行单元测试。

5 个答案:

答案 0 :(得分:3)

这个问题基本上只有一个答案:PHPUnit

这是PHP中最大的测试框架。最佳记录,大多数用户,大多数功能,行业标准。所有你想要的。 manual is here

对于MVC:编写可测试代码与您编程的设计模式没有任何关系。

答案 1 :(得分:2)

你可以在没有任何框架的情况下编写单元测试,但你会发现自己编写了很多概念,可以从PHPUnitEnhancePHP免费获得。

特别是,框架将具有允许您断言测试的帮助程序,帮助您在测试中使用的假货(如果您使用MVC模式,在您的情况下尤其有用)以及运行和显示的方法结果。

如果你看一下单元测试框架的源代码,你可以看到所有这些帮助器是如何工作的,最终学习一个框架比写一个框架更快。

以下是手动测试的示例 - 如果结果不正确,或者存在异常,我们将无法通过测试:

$passed = true;
try {
    $result = $target->addTwoNumbers(5, 2);
    $passed = 7 === $result;
} catch (Exception $e) { 
    $passed = false;
}

return $passed;

当您使用框架时,这会变得更具可读性:

$result = $target->addTwoNumbers(5, 2);
Assert::areIdentical(7, $result);

在这两个例子中,我省略了设置测试的代码,即创建$target,因为它没有为比较增加任何意义。

答案 2 :(得分:2)

还有SimpleTest(http://www.simpletest.org/) - 这是一个很轻的。没有许多其他测试套件的包袱。

您还可以使用自动化工具,例如Selenium,它基本上模仿了用鼠标坐着浏览的用户 - 显然你必须训练它并分配测试等。

答案 3 :(得分:1)

当然,您可以使用PHPUnit或其他单元测试框架。我不喜欢在我的项目中添加大量额外代码的想法,所以我自己写了一个单元测试器。

对于基本单元测试,您只需要2个PHP文件/类。一个执行实际测试,一个是单元测试的基类。

我用代码写了blog来演示如何做到这一点。单位测试人员可以在行动here中看到。

我的感觉,当一个问题突然出现时,大多数答案是:不要自己动手使用xxx。然而,这会带来一个代价:它将使您的代码膨胀,并使完成的项目更大,更难以维护并依赖于第三方代码。

答案 4 :(得分:1)

试用本教程

http://pear.php.net/manual/en/package.php.phpunit.intro.php

最好的方法是使用PHPUnit进行单元测试。