CakePHP 2.4 的 PHPUnit 安装

PHPUnit intallation for CakePHP 2.4

我在尝试 运行 测试时遇到的错误:

Fatal error: Class 'PHPUnit_Util_Diff' not found in Cake/TestSuite/Reporter/CakeHtmlReporter.php on line 267

根据 this question 和那里的答案,我需要安装 PHPUnit 3.6.x 以避免丢失 Class 错误。我如何安装这个现已弃用的版本?

我试过像这样使用作曲家:

composer global require "phpunit/phpunit=3.6.*"

但是我得到以下错误

 Problem 1
    - The requested package phpunit/phpunit could not be found in any version, there may be a typo in the package name.

我用这个命令试过 PEAR:

sudo pear install phpunit/PHPUnit-3.6.12

但是我得到这个错误:

Attempting to discover channel "phpunit"...
Attempting fallback to https instead of http on channel "phpunit"...
unknown channel "phpunit" in "phpunit/phpunit-3.6.12"
invalid package name/package file "phpunit/phpunit-3.6.12"
install failed

我找到了一个答案 here which points me to dereuromark's plugin,它已被弃用并建议我使用 composer,因为 PHPUnit 的 pear 通道已关闭。更不用说它是版本 3.7.x,缺少我需要的 Class。所以,我兜了一圈。

tl;dr 如何为 CakePHP 2.4.x 安装 PHPUnit 3.6.x?

UPDATE:我检查过在最新的 CakePHP 2.x 版本中使用了相同的 class。另外,我应该在安装了较旧的 PHPUnit 的类似但较旧的 VM 上正确提及该测试 运行。

我设法解决了这个问题。由于我无法安装已弃用的 PHPUnit 版本,我从 Diff class(diff、diffToArray 和 longestCommonSubsequence)中提取了缺失的函数并将它们放入 CakeHtmlReporter Class,因为那是唯一引用它们的人。

之后,我将 PHPUnit_Util_Diff::diff 更改为 self::diff,它现在可以正常工作了,尽管它缺少旧的 CSS 样式,但我可以接受。

这不是我提出的问题的答案,但也许它可以帮助其他人,直到出现更好的答案。

TL;DR: PHPUnit 3.6 不再可供安装。

PHPUnit 3.6 仅作为 PEAR 包提供。 The PEAR Channel that hosted PHPUnit, pear.phpunit.de, was shut down on December 31, 2014.