15

我已经为这个问题纠结了太久了。我知道我只需要跳入其中一个或另一个,因为它们显然都是可行/有用的工具,但已经被困在栅栏上,研究了两个星期。

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

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

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

PHPUnit 基本上融入了 Laravel 框架,看起来这可能是更容易的选择,但我真的很喜欢 PHPSpec 的 BDD 方面。但是,PHPSpec 似乎不想与 Laravel 的外观设置很好地配合使用(我还发现这可能是一个在可能的情况下避开的好习惯)。

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

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

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

任何经历过两者的人的任何资源/见解都将不胜感激。

4

1 回答 1

34

PHP规范

PhpSpec 是一个设计工具。如果您不习惯 TDD(测试优先方法),那么一开始会让您的生活变得艰难。

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

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

PhpUnit

另一方面,PhpUnit 是一个测试工具。你可以将它与 TDD、BDD 或任何你称之为的东西一起使用。但你不必这样做。

选择

如果您的目标是学习如何更好地设计并且您致力于测试优先的方法,那么 PhpSpec 将为您提供帮助。如果您的目标是测试或验证,PhpUnit 是您的朋友。

TDD 与 BDD

它既不是TDD也不是BDD。至少从代码级别的角度来看,它们是相同的。BDD 最初是对 TDD 的重新定义,提供了更好的术语。现在它超越了代码级别,而且远不止于此。这些天来,我更喜欢使用 Gojko Adzic 提出的一个术语——通过示例进行规范

于 2014-04-30T12:09:41.303 回答