【问题标题】:First Shot at Testing Laravel 4 apps (PHPSpec/BDD vs. PHPUnit/TDD)测试 Laravel 4 应用程序的第一枪(PHPSpec/BDD 与 PHPUnit/TDD)
【发布时间】:2014-06-15 21:33:33
【问题描述】:

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

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

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

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

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

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

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

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

非常感谢任何经历过这两种情况的人提供的任何资源/见解。

【问题讨论】:

  • 我一直在和同样的事情搏斗,你是 Laracasts 的成员吗? Jeffrey Way 有一些关于 PHPUnit 和 PHPSpec 的视频。因为我是测试新手,所以我决定从 PHPUnit 开始,因为有更多的文档,而且似乎更容易开始。
  • 哈哈@MitchGlenn 那是我的确切情况。自去年 12 月以来,我一直在使用 Laracasts,并且从 Jeffrey Way 那里学到了很多东西(他最近似乎喜欢上了 PHPSpec)。我的开发人员的好奇心使我想要深入研究 PHPSpec,但出于这个确切原因,似乎更明智、更节省时间/成本效益的选择是 PHPUnit。感谢您的意见。
  • 我是 6 天前加入的,现在有 65 个视频,我觉得我的大脑很快就会因为这么多精彩的内容而爆炸。我想从 Jeffrey 的出色表现来看 PHPSpec,但正如你所说,为了提高时间效率,我从更简单的路线开始完成工作。

标签: laravel-4 tdd phpunit bdd phpspec


【解决方案1】:

PhpSpec

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

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

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

PhpUnit

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

选择

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

TDD 与 BDD

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

【讨论】:

  • 完美。这几乎是我从阅读和试验这两者中得到的要点......在我的情况下,我可能需要从 PHPUnit 开始,因为我真的需要在一些现有项目中实施一些测试。然后!...跳入 PHPSpec 领域。过去几周我一直在使用 rails/rspec (*gasp!) 并且一直很享受。目前在两个世界之间有点分裂......感谢您的洞察力。
  • 我理解正确吗:任何时候你的函数使用 laravel 外观,它都可以用 phpspec 进行测试?我认为这可能与我遇到的另一个问题有关 (stackoverflow.com/questions/27973926/…)
猜你喜欢
  • 2015-02-14
  • 2015-08-25
  • 1970-01-01
  • 2015-02-18
  • 2017-10-19
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 2014-09-22
相关资源
最近更新 更多