第一次测试Laravel 4应用程序(PHPSpec/BDD与PHPUnit/TDD)

Eri*_*bar 15 tdd bdd phpunit phpspec laravel-4

我一直在和这个问题搏斗太久了.我知道我需要跳到一个或另一个,因为它们显然都是可行的/有用的工具,但是已经被困在了几个星期的两个方面.

PHPUnitPHPSpec - 哪一个可以带来更好的长期可维护性和编程实践?

我已经和几个经验丰富的PHPUnit谈过 - > PHPspec转换/用户现在发誓PHPspec,声称它通过BDD方法促进了更好的设计.但是,由于它是一个更新的工具,与PHPUnit相比缺乏社区/教程.

目前,我的PHP开发主要围绕Laravel 4开发.

在PHPUnit基本上融入Laravel框架的地方,看起来这可能是更容易的选择,但我真的很喜欢PHPSpec的BDD方面.然而,似乎PHPSpec不希望与Laravel的外观设置很好地配合(我也发现这可能是一个很好的做法,以便尽可能避开).

我真正的难题是哪一个更有可能成功地集成到现有的Laravel 4项目中,而现有的测试覆盖率为零.

我有一个早期/简短的尝试将PHPUnit和PHPSpec集成到现有项目中,但实际上只是不确定从哪里开始编写初始测试并最终废弃它们暂时.

我真的想弄清楚从长远来看哪一个可能更值得投入一些时间.

任何经历过两者的人的任何资源/见解都将受到高度赞赏.

Jak*_*las 33

PhpSpec

PhpSpec是一种设计工具.如果您不习惯TDD(测试优先方法),它会在一开始就让您的生活变得艰难.

不过,你会在这个过程中学到很多东西.你也会发誓.许多事情被认为是一种不好的做法,使用PhpSpec是不可能的(例如部分模拟).你必须理解它并接受它.测试Laravel的外观很难,因为这不是OOP.

使用PhpSpec测试现有代码要困难得多,因为您必须首先使其可测试(使用测试优先方法更容易).

PHPUnit的

另一方面,PhpUnit是一种测试工具.您可以将它与TDD,BDD或您称之为的任何东西一起使用.但你没必要.

选择

如果您的目标是学习如何更好地设计并且您已经采用了测试优先方法,那么PhpSpec将为您提供帮助.如果您的目标是测试或验证,PhpUnit是您的朋友.

TDD与BDD

它不是TDDBDD.至少从代码级别来看,它们是相同的.BDD最初是作为TDD重新定义的,提供了更好的术语.现在它超越了代码级别,而且远不止于此.这些天我更喜欢使用Gojko Adzic提出的术语 - 通过实例说明.