我很想知道如何在普通的PHP中使用单元测试来测试我们的代码。
他们的任何指导原则。
当我们使用MVC架构创建网站时,我们如何进行单元测试。
答案 0 :(得分:3)
这个问题基本上只有一个答案:PHPUnit。
这是PHP中最大的测试框架。最佳记录,大多数用户,大多数功能,行业标准。所有你想要的。 manual is here。
对于MVC:编写可测试代码与您编程的设计模式没有任何关系。
答案 1 :(得分:2)
你可以在没有任何框架的情况下编写单元测试,但你会发现自己编写了很多概念,可以从PHPUnit或EnhancePHP免费获得。
特别是,框架将具有允许您断言测试的帮助程序,帮助您在测试中使用的假货(如果您使用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)