【问题标题】:Use \PHPUnit_Framework_TestCase or ..\TestCase使用 \PHPUnit_Framework_TestCase 或 ..\TestCase
【发布时间】:2016-10-30 17:25:30
【问题描述】:

愚蠢的问题...在 Symfony 文档中,单元测试类扩展 \PHPUnit_Framework_TestCase,但在 PHPUnit 文档中,测试类扩展 PHPUnit\Framework\TestCase。有区别吗,它们是一样的吗,还是我错过了一个微妙的 PHP 功能,_ 等同于\

我自己没有实际测试过,我可以使用其中一个,还是只在 Symfony 中使用一个?

更新:有人向我解释说这两个类只是 PHPUnit 版本之间的区别。经过我自己的研究并记录在案,Symfony 3.1 仍然在其自己的 KernelTestCase 类中扩展了 \PHPUnit_Framework_TestCase,该类为 Symfony 的功能测试提供支持。为了避免破坏代码,当专门使用 Symfony 进行单元测试时,我将谨慎行事并扩展继承自 \PHPUnit_Framework_TestCaseWebTestCase。这样的单元测试仍然适用于 PHPUnit 5.6

【问题讨论】:

标签: php symfony phpunit


【解决方案1】:

这些是相同的,但从 PHPUnit 5.4 开始,建议使用 TestCase。不过,如果你留在PHPUnit_Framework_TestCase,这不是问题。

看到一个非常相似的问题:PHPUnit can't found the "TestCase" class

【讨论】:

  • 所以这是一个遗留 Symfony 笔记落后于 PHPUnit 更改的案例?
  • 如果 Symfony2 在某处使用 PHPUnit_Framework_TestCase,那是因为它是旧代码,或者他们的测试与 PHPUnit 5.4+ 兼容。
  • 我会仔细研究它,尤其是 composer 配置,看看它为项目安装了什么版本。我在技术上使用 Symfony 3.1,但即使 StackExchange 也只显示 symfony2 标签。更新: Composer 推迟到 PHPUnit 的全局安装,没有安装本地副本。我的全球版本是 5.6
  • 由于我的包的单元测试必须在 5.4 到 7.1 的 PHP 上运行,我找到了一种解决方法,以便编写的测试可以跨这些版本运行 -- stackoverflow.com/a/42030041/108146
猜你喜欢
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多