PHP中的testing驱动开发

我是一个使用PHP开发的Web开发人员。 我在使用C#桌面应用程序中的testing驱动开发方面有一些有限的经验。 在这种情况下,我们使用nUnit作为unit testing框架。

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

你对基于PHP的unit testing框架有什么build议?对于TDD概念相当陌生的人来说,有什么好的资源?

我使用了PHPUnit和SimpleTest ,我发现SimpleTest更容易使用。

就TDD而言,我从来没有在最纯粹的意义上运气。 不过,我认为这主要是一个时间/纪律问题。

事后添加testing有些有用,但我最喜欢的事情是使用编写SimpleTesttesting来testing我必须修复的特定错误。 这样可以很容易地validation事实上是否已经修复并保持不变。

我强烈推荐Kent Beck的Test-Driven Development(ISBN-10:0321146530) 。 这不是专门为PHP编写的,但概念在那里,应该很容易转换成PHP。

PHPUnit是一个标准,但它有时也是压倒性的,所以如果你觉得它太复杂,请检查一下phpt让你开始。 编写testing非常非常简单。 对于任何程序员来说,都不是一件容易的事

并回答您的TDD问题 – 我不确定TDD是否在PHP空间中使用。 我可以看到,快速的应用程序开发和TDD有些冲突(严格恕我直言)。 TDD要求您完整地了解自己构build的内容,并提前编写testing,然后实施代码以使testing通过。

所以比如说我们做的就是在完成后写很多testing。 这并不总是最好的方法,因为有时候最终通过了一些虚假的testing,但是并不是很有用,但至less可以扩展。 在内部,我们继续进行testing,基本上为每个发现的bug编写一个testing。 这是如何变得更加坚实。

我个人比较喜欢SimpleTest。 有一个命令行testing运行器和基于Web的testing运行器,甚至还有一个Eclipse 插件让你从IDE本身运行unit testing。 我发现Zend到PHPUnit的连接要难得多,特别是在debugging器的情况下。

我们在内部使用SimpleTest的方式是使用我们自己编写的持续集成脚本。 每次我们检查SVN的function,我们包括unit testing。 CI脚本每隔一小时左右运行一次,并调用一个命令行PHP脚本来运行我们所有的unit testing。 如果有任何中断,我收到一封电子邮件。 这是减less我们系统中的错误的好方法。

但是,您可以像使用Phing一样轻松地在cron作业或SVN签入挂钩上自动运行testing。

事实上,如果你想直接联系我以获得进一步的帮助,你可以通过我的个人资料信息find我。 我很乐意帮助你。

SimpleTest是一个很棒的系统。 我从5个月前开始使用它,从来没有听说过TDD,SimpleTest很容易学习,但仍然强大。 至于资源方面,我现在正在阅读Kent Beck的TDD By Example ,这很好。

你应该看看PHPUnit ,它看起来很像nUnit。

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