我是一名使用PHP的网络开发人员。我在C#桌面应用程序中使用测试驱动开发的经验有限。在那种情况下,我们使用nUnit作为单元测试框架。
我想在新项目中开始使用TDD,但我真的不知道从哪里开始。
对于基于PHP的单元测试框架,您有什么建议?对于对TDD概念不熟悉的人来说,有哪些好的资源?
答案 0 :(得分:40)
我已经使用过PHPUnit和amp; SimpleTest ,我发现 SimpleTest 更易于使用。
就TDD而言,从最纯粹的意义上说,我没有太多运气。我认为这主要是我的时间/纪律问题。
在事实之后添加测试有点有用,但我最喜欢的事情是使用write SimpleTest测试来测试我必须修复的特定错误。这样可以很容易地验证事情是否已得到修复并保持不变。
答案 1 :(得分:11)
我强烈推荐Test-Driven Development by Kent Beck (ISBN-10: 0321146530)。它不是专门为PHP编写的,但其中的概念很容易转换为PHP。
答案 2 :(得分:9)
PHPUnit是一个标准,但它有时也是压倒性的,所以如果你发现它太复杂,请查看phpt以帮助你入门。在其中编写测试非常非常容易。对任何程序员来说都没有道理。
回答你的TDD问题 - 我不确定TDD是否在PHP空间中使用了widley。我可以看到快速应用程序开发和TDD有些冲突(严格来说是恕我直言)。 TDD要求您完整了解您构建的内容并预先编写测试,然后实现代码以使测试通过。
例如,我们所做的就是在完成后编写大量测试。这并不总是最好的方法,因为你有时最终会通过虚假测试,但实际上并没有用,但至少它是你可以扩展的东西。在内部我们继续测试,基本上为我们发现的每个bug编写一个测试。这就是它变得更加坚固的方式。
答案 3 :(得分:4)
我个人更喜欢SimpleTest。有一个命令行测试运行器和基于Web的测试运行器,甚至还有一个Eclipse plugin允许您从IDE本身运行单元测试。我发现Zend与PHPUnit的连接更难以开始工作,特别是使用调试器。
我们在内部使用SimpleTest的方式是使用我们自己编写的continuous integration脚本。每次我们向SVN签入功能时,我们都会包含单元测试。每隔一小时左右,CI脚本就会运行并调用一个运行所有单元测试的命令行PHP脚本。如果有任何中断,我收到一封电子邮件。这是减少系统中的错误的好方法。
但是,您可以轻松地使用Phing之类的东西来自动运行测试,无论是在cron作业还是使用SVN签到挂钩。
事实上,如果您想直接与我联系以获得进一步的帮助,您可以通过我的个人资料信息找到我。我很乐意帮助你。
答案 4 :(得分:2)
SimpleTest是一个很棒的系统。大约5个月前我开始使用它,从未听说过TDD,而SimpleTest很容易学习,但仍然很强大。至于资源方面,我目前正在读Kent Beck的 TDD By Example ,这很好。
答案 5 :(得分:1)
您应该查看PHPUnit,它看起来非常像nUnit。
答案 6 :(得分:1)
您应该看到的另一个现代工具是Codeception。它比PHPUnit简单得多,并采用了场景驱动的方法,这对于从测试生成文档非常有用。
答案 7 :(得分:0)
测试驱动开发是一种始终在代码之前编写测试的方法。 您应该先学习PHPUNIT才能开始TDD开发。然后,在创建函数时,您应始终考虑函数如何失败并在phpunit中编写测试用例,最后您应编写代码以通过测试。它将是一种新方法,因此从一开始就不会有什么困难,但是一旦您习惯了它,就会发现它特别适用于开发后的bug和编码风格。您可以阅读这份Step By Step指南以了解此概念。
始终记住,如果测试是在开发之后编写的,则它们是无用的。因此,如果您要编写单元测试
,则必须使用TDD