通过 composer 安装的 phpunit,告诉 phing 使用它

phpunit installed via composer, tell phing to use that

我似乎无法让 Phing 使用我通过 composer 安装的 PHPUnit(在项目本地 bin/ 目录中)。作为最后的手段,如果我告诉 Phing 使用我的 phpunit 可执行文件,就好像它是一个使用 <phpunit pharlocation="${basedir}/bin/phpunit" />

的 PHAR 文件一样

但这也失败了:

Project > phpunit:

#!/usr/bin/env php
PHPUnit 4.8.21 by Sebastian Bergmann and contributors.

unrecognized option -- f

我不想篡改我的 PATH,因为其他开发人员应该能够 运行 phing phpunit-target 而不会遇到任何大麻烦。另外,全局安装的 phpunit 不是我想要的,因为我不希望开发人员之间存在版本差异。

Phing 使用您的项目本地库,包括 PHPUnit 库,您不必明确提及 bin/phpunit 可执行文件。

我不知道 phing 如何知道查看项目本地依赖项。

将您的 PhpunitTask 变成 ExecTask 应该会有所帮助:

<target name="phpunit">
    <exec logoutput="true" checkreturn="true" dir="${basedir}" command="bin/phpunit" />
</target>

有关参考,请参阅 https://www.phing.info/docs/guide/trunk/ExecTask.html

您是否已经尝试过 Phing 自动加载任务?

https://www.phing.info/docs/guide/trunk/AutoloaderTask.html

我是这样使用的:

我设法修复了自动加载 composer/autoload.php 文件

<project name="name" default="build">
  <autoloader autoloaderpath="${baseDir}/vendor/autoload.php"/>

  <target name="tests">
        <phpunit bootstrap="${testsDir}/bootstrap.php" >
            <formatter type="plain" usefile="false"/>
            <batchtest>
                <fileset dir="${testsDir}">
                    <include name="**/*Test*.php"/>
                </fileset>
            </batchtest>
        </phpunit>
    </target>

</project>