无法全局安装旧版本的 phpunit phar
Unable to globally install older version of phpunit phar
如 https://phpunit.de/manual/current/en/installation.html#installation.phar.verification 中所述,全局安装 PHAR 的步骤是:
$ wget https://phar.phpunit.de/phpunit.phar
$ chmod +x phpunit.phar
$ sudo mv phpunit.phar /usr/local/bin/phpunit
$ phpunit --version
PHPUnit x.y.z by Sebastian Bergmann and contributors.
我遵循了上面的方法,但是 URL 用于旧版本,即 https://phar.phpunit.de/phpunit-old.phar(因为我们的 PHP 版本更旧)。然后我 运行 以下命令 -
$ chmod +x phpunit-old.phar
$ sudo mv phpunit-old.phar /usr/local/bin/phpunit
注意 - 我的 PHP 版本是 5.3.29。 phpunit.de 中的旧稳定版本部分说 PHPUnit 4.8 在 PHP 5.3、PHP 5.4、PHP 5.5 和 PHP 上受支持5.6.
到这里为止看起来还不错。但是,运行ning phpunit --version
给出 -
PHP Fatal error: require(): Cannot redeclare class phpunit_extensions_database_constraint_tableisequal in /usr/local/bin/phpunit on line 109
zend_mm_heap corrupted
因此,我没有将 .phar
移动到 /usr/local/bin/
(在第 3 步中),而是通过 运行 管理这个 -
$ php phpunit-old.phar –-version
我也可以用这种方式 运行 我的单元测试用例 -
php /home/sandeepan/phpunit-old.phar /var/cake_1.2.0.6311-beta/app/webroot/openx/lib/ad_agencies/unittests/Admarvel_generic_network_test.php
但是,现在我需要将 phpunit 与 phing 集成。我想使用 PHPUnitTask of phing 提供的基本实用程序。所以,我想它需要全局安装 phpunit phar。
我通过写以下内容来试试运气 -
<phpunit haltonfailure="true" haltonerror="true"
pharlocation="/home/sandeepan/phpunit-old">
<formatter type="plain" usefile="false" />
<batchtest>
<fileset dir="${dir.scratchpad}/${dir.subdir}/unittests">
<include name="**/*_test.php"/>
</fileset>
</batchtest>
</phpunit>
但是我收到这个错误 -
BUILD FAILED
...
: PHPUnitTask requires PHPUnit to be installed
更新
参考 whosebug.com/a/23410676/351903,我尝试使用这个旧版本的 Phpunit,即 PHPUnit-3.7.35。现在,phpunit --version
命令起作用了。但是我使用 Phing 的 PHPUnitTask 仍然没有成功。仍然收到 PHPUnitTask requires PHPUnit to be installed
错误。
更新 2
对我有用的解决方案是使用 PHPUnit 3.7.35。 phing 似乎与 PHPUnit 4.8 存在一些兼容性问题。
我刚刚从 phpunit.de 网站下载了您提供的旧 PHP 单元文件,并成功应用了您编写的命令。 运行 phpunit 在我的案例中非常有用。
也许您的 PHP 版本与您下载的 PHPUnit 版本不兼容?
我无法重现您描述的问题:
$ wget https://phar.phpunit.de/phpunit-old.phar
--2016-04-07 09:47:35-- https://phar.phpunit.de/phpunit-old.phar
Resolving phar.phpunit.de (phar.phpunit.de)... 188.94.27.25
Connecting to phar.phpunit.de (phar.phpunit.de)|188.94.27.25|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://phar.phpunit.de/phpunit-4.8.24.phar [following]
--2016-04-07 09:47:35-- https://phar.phpunit.de/phpunit-4.8.24.phar
Reusing existing connection to phar.phpunit.de:443.
HTTP request sent, awaiting response... 200 OK
Length: 3086772 (2.9M) [application/octet-stream]
Saving to: ‘phpunit-old.phar’
phpunit-old.phar 100%[=====================================================================================================================================>] 2.94M 3.97MB/s in 0.7s
2016-04-07 09:47:36 (3.97 MB/s) - ‘phpunit-old.phar’ saved [3086772/3086772]
$ php phpunit-old.phar --version
PHPUnit 4.8.24 by Sebastian Bergmann and contributors.
对我有用的解决方案是使用 PHPUnit 3.7.35。 phing 似乎与 PHPUnit 4.8 存在一些兼容性问题。
来源 - Phing can't see PHPUnit
如 https://phpunit.de/manual/current/en/installation.html#installation.phar.verification 中所述,全局安装 PHAR 的步骤是:
$ wget https://phar.phpunit.de/phpunit.phar
$ chmod +x phpunit.phar
$ sudo mv phpunit.phar /usr/local/bin/phpunit
$ phpunit --version
PHPUnit x.y.z by Sebastian Bergmann and contributors.
我遵循了上面的方法,但是 URL 用于旧版本,即 https://phar.phpunit.de/phpunit-old.phar(因为我们的 PHP 版本更旧)。然后我 运行 以下命令 -
$ chmod +x phpunit-old.phar
$ sudo mv phpunit-old.phar /usr/local/bin/phpunit
注意 - 我的 PHP 版本是 5.3.29。 phpunit.de 中的旧稳定版本部分说 PHPUnit 4.8 在 PHP 5.3、PHP 5.4、PHP 5.5 和 PHP 上受支持5.6.
到这里为止看起来还不错。但是,运行ning phpunit --version
给出 -
PHP Fatal error: require(): Cannot redeclare class phpunit_extensions_database_constraint_tableisequal in /usr/local/bin/phpunit on line 109
zend_mm_heap corrupted
因此,我没有将 .phar
移动到 /usr/local/bin/
(在第 3 步中),而是通过 运行 管理这个 -
$ php phpunit-old.phar –-version
我也可以用这种方式 运行 我的单元测试用例 -
php /home/sandeepan/phpunit-old.phar /var/cake_1.2.0.6311-beta/app/webroot/openx/lib/ad_agencies/unittests/Admarvel_generic_network_test.php
但是,现在我需要将 phpunit 与 phing 集成。我想使用 PHPUnitTask of phing 提供的基本实用程序。所以,我想它需要全局安装 phpunit phar。
我通过写以下内容来试试运气 -
<phpunit haltonfailure="true" haltonerror="true"
pharlocation="/home/sandeepan/phpunit-old">
<formatter type="plain" usefile="false" />
<batchtest>
<fileset dir="${dir.scratchpad}/${dir.subdir}/unittests">
<include name="**/*_test.php"/>
</fileset>
</batchtest>
</phpunit>
但是我收到这个错误 -
BUILD FAILED
...
: PHPUnitTask requires PHPUnit to be installed
更新
参考 whosebug.com/a/23410676/351903,我尝试使用这个旧版本的 Phpunit,即 PHPUnit-3.7.35。现在,phpunit --version
命令起作用了。但是我使用 Phing 的 PHPUnitTask 仍然没有成功。仍然收到 PHPUnitTask requires PHPUnit to be installed
错误。
更新 2
对我有用的解决方案是使用 PHPUnit 3.7.35。 phing 似乎与 PHPUnit 4.8 存在一些兼容性问题。
我刚刚从 phpunit.de 网站下载了您提供的旧 PHP 单元文件,并成功应用了您编写的命令。 运行 phpunit 在我的案例中非常有用。
也许您的 PHP 版本与您下载的 PHPUnit 版本不兼容?
我无法重现您描述的问题:
$ wget https://phar.phpunit.de/phpunit-old.phar
--2016-04-07 09:47:35-- https://phar.phpunit.de/phpunit-old.phar
Resolving phar.phpunit.de (phar.phpunit.de)... 188.94.27.25
Connecting to phar.phpunit.de (phar.phpunit.de)|188.94.27.25|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://phar.phpunit.de/phpunit-4.8.24.phar [following]
--2016-04-07 09:47:35-- https://phar.phpunit.de/phpunit-4.8.24.phar
Reusing existing connection to phar.phpunit.de:443.
HTTP request sent, awaiting response... 200 OK
Length: 3086772 (2.9M) [application/octet-stream]
Saving to: ‘phpunit-old.phar’
phpunit-old.phar 100%[=====================================================================================================================================>] 2.94M 3.97MB/s in 0.7s
2016-04-07 09:47:36 (3.97 MB/s) - ‘phpunit-old.phar’ saved [3086772/3086772]
$ php phpunit-old.phar --version
PHPUnit 4.8.24 by Sebastian Bergmann and contributors.
对我有用的解决方案是使用 PHPUnit 3.7.35。 phing 似乎与 PHPUnit 4.8 存在一些兼容性问题。
来源 - Phing can't see PHPUnit