【问题标题】:Why phper does not care test?为什么phper不关心测试?
【发布时间】:2010-10-06 13:05:10
【问题描述】:

在 Java 或 Ruby 中,有很多关于 test/TDD/BDD 的讨论。并且在 Java/Ruby 项目中有很多测试。

但是我注意到,PHP项目中的测试较少,而且PHPer似乎不喜欢编写测试,我只是想知道原因。谢谢

【问题讨论】:

标签: php unit-testing testing


【解决方案1】:

我使用了多种语言的多个应用程序或库,但不包括单元测试。这不是 PHP 社区孤立的东西。

事实上,PHP 有几个可用的测试框架。开发人员可能出于任何原因选择不使用它们,或者可能不知道它们。毕竟,很多 PHP 开发人员都是自学成才,没有接受过正规的计算机科学培训。

老实说,我认识的大多数使用测试框架和其他生命周期工具的 PHP 开发人员往往已经在该领域工作了很长时间,或者来自 Java 等其他背景。

【讨论】:

    【解决方案2】:

    IMO 有多种影响因素:

    • 对于 PHPers 来说,这是一个相当新的概念。我自己不使用它。大多数应用程序都是在没有约定 API 设计的情况下编写的,因此代码先于测试(在实践中)。
    • 测试框架(PHPUnit 和 SimpleTest)并不自然。
    • PHP 在与 Ruby/Java 不同的环境中运行。此外,应用程序部分被拆分为包含脚本,这些脚本与包具有不同的语义;有时位置会有所不同。
    • PHP 不像其他语言那样面向核心。大多数代码是程序化的/混合的或混合的。

    到目前为止,我会询问 Unit-Testing for PHPs 运行时环境的优点。硒可能是更好的选择。但就我个人而言,我正在寻找一种更简单的方法:simple (non-unit) test framework, similar to .phpt, should evaluate output/headers/errors/results

    【讨论】:

    • 很大程度上取决于您的应用程序架构。一个可靠的面向对象的 PHP 应用程序很容易使用 PHPUnit 进行测试。如您所说,将组件拆分为包含脚本的过程代码可能无法很好地测试。这是开发者/架构师的缺点,而不是 PHP 或测试框架。
    • 甚至程序代码也可以通过例如快照测试。很少有人编写程序代码,但随后又想编写测试类。这主要是为什么 phpunit&co 被避开的原因。正如您所说,包含脚本和非程序性意大利面条代码不适合进行太多测试。然而,所述脚本是一种广泛使用的 PHP 架构模式(想想视图和模板)。
    • 恕我直言,业务逻辑和视图/模板逻辑是可以/应该独立测试的东西。带有单元和集成测试的业务逻辑,以及带有 Selenium 和类似工具的视图/模板。我认为缺乏测试主要源于开发人员的无知或错误信息,但它肯定不是孤立于 PHP 的。 PHP 开发人员几乎没有可用的培训,尤其是针对这些主题。
    • 我想我说了这么多是为了重申问题在于开发人员的观点,而不是您的回答似乎暗示的语言。是的,很多 PHP 项目都使用了程序和 OO 的混合体。这当然不是因为 PHP 强加了这种风格。
    • 众所周知!== 写得很好。仅仅因为一个项目被广泛使用并不能使代码成为如何使用该语言的光辉示例。这只是意味着应用程序的概念很流行。
    猜你喜欢
    • 2010-09-25
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 2010-11-21
    相关资源
    最近更新 更多