关于单元测试:PHP中的测试驱动开发

关于单元测试:PHP中的测试驱动开发

Test Driven Development in PHP

我是使用PHP的网络开发人员。 我在C#桌面应用程序中使用"测试驱动开发"的经验有限。 在这种情况下,我们将nUnit用于单元测试框架。

我想开始在新项目中使用TDD,但是我真的不确定从哪里开始。

您对基于PHP的单元测试框架有什么建议?对于TDD概念的新手,有哪些好的资源?


我同时使用了PHPUnit和SimpleTest,并且发现SimpleTest更易于使用。

就TDD而言,从最纯粹的意义上来说我还没有多大运气。我认为这主要是时间/纪律问题。

在事实之后添加测试是很有用的,但是我最喜欢做的事情是使用编写SimpleTest测试来测试必须修复的特定错误。这使得验证事物是否确实固定并保持固定非常容易。


我强烈建议肯特·贝克(ISBN-10:0321146530)进行"测试驱动开发"。它不是专门为PHP编写的,但是概念已经存在,应该可以轻松地翻译成PHP。


PHPUnit是一个标准,但有时也会令人不知所措,因此,如果您发现它太复杂了,请查看phpt以开始使用。在其中编写测试非常非常容易。对于任何程序员来说,都是没有脑子的。

并回答您的TDD问题-我不确定TDD是否在PHP空间中使用了widley。我可以看到快速的应用程序开发和TDD有点冲突(严格来说是恕我直言)。 TDD要求您全面了解所构建的内容,并预先编写测试,然后实施代码以使测试通过。

因此,例如,我们要做的是在完成后编写大量测试。这并不总是最好的方法,因为您有时最终会通过虚假测试,但并不是真正有用,但至少可以扩展。在内部,我们继续进行测试,并基本上针对发现的每个错误编写测试。这就是它变得更牢固的方式。


我个人更喜欢SimpleTest。有一个命令行测试运行程序和基于Web的测试运行程序,甚至还有一个Eclipse插件,可让您从IDE本身运行单元测试。我发现Zend与PHPUnit的连接更难工作,尤其是在调试器中。

我们内部使用SimpleTest的方式是使用我们自己编写的连续集成脚本。每次我们向SVN签入功能时,我们都会包含单元测试。 CI脚本大约每隔一个小时运行一次,并调用运行我们所有单元测试的命令行PHP脚本。如果有任何休息,我会收到一封电子邮件。这是减少系统错误的好方法。

但是,您可以轻松地使用Phing之类的工具在cron作业上或通过SVN检入挂钩自动运行测试。

实际上,如果您想直接与我联系以寻求进一步的帮助,可以通过SO上的个人资料与我联系。我很乐意为您提供帮助。


SimpleTest是一个很棒的系统。我大约5个月前开始使用它,从未听说过TDD,SimpleTest易于学习,但功能仍然很强大。至于资源,我目前正在阅读肯特·贝克(Kent Beck)的《 TDD示例》,这很好。


您应该看到的另一个现代工具是Codeception。它比PHPUnit简化得多,并包含了场景驱动的方法,这对于从测试生成文档非常有用。


您应该研究PHPUnit,它看起来很像nUnit。


测试驱动开发是一种始终在代码之前编写测试的方法。
您应该先学习PHPUNIT才能开始TDD开发。然后,在创建函数时,您应始终考虑函数如何失败并在phpunit中编写测试用例,最后您应编写代??码以通过测试。它将是一种新方法,因此从一开始就不会有什么困难,但是一旦您习惯了它,就会发现它特别适用于开发后的bug和编码风格。您可以阅读本分步指南以了解此概念。

永远记住如果测试是在开发之后编写的,那么它们是无用的。因此,如果您想编写单元测试,则必须使用TDD


推荐阅读

    1394连接是什么1394网络适配器知识

    1394连接是什么1394网络适配器知识,,今天有网友在QQ群中问了这样一个问题:1394连接是什么?。由于笔者对1394连接不清楚,通过百度搜索与谷歌

    无线路由器网络如何自动断开线路

    无线路由器网络如何自动断开线路,,如何解决无线路由器网络自动断线?大家应该知道无线网络是很方便的,但是就是网络方面相对来说没那么稳定,对

    网络设置教程|如何网络设置

    网络设置教程|如何网络设置,,如何网络设置wifi路由器信道的设置步骤如下:1.打开浏览器,输入192.168.1.1,进入路由器的网关页面。2.输入管理员

    陈天乔:盛大网络为移动互联网

    陈天乔:盛大网络为移动互联网,,12月2日,北京时间,简称:盛大发布的2011财年第三季度财务报告,截至9月30日,在随后的电话会议上,盛大网络董事长和陈

    无法打开网络正常网页的解决方案

    无法打开网络正常网页的解决方案,,昨天我在一家电脑公司做了一个奇怪的现象,在网络的开始都是正常的,QQ是正常的,但不久之后,我发现无法打开网

    wps文档拆分各种元格|WPS拆分单元格

    wps文档拆分各种元格|WPS拆分单元格,拆分,文档,wps,1.WPS如何拆分单元格“拆分单元格”是WPS文字和WPS演示中的功能。下面分两部分介绍。

    路由网络共享设置

    路由网络共享设置,,互联网已经与人们的生活息息相关,但是高昂的入网费用却成了不少人的负担(特别对于广大的莘莘学子),某些网络供应商还会限制