Я не могу заставить Phing использовать мой PHPUnit, установленный через composer (в локальном проекте bin/
каталог). В крайнем случае, если я скажу Phing использовать мой исполняемый файл phpunit, как если бы это был файл PHAR, использующий <phpunit pharlocation="${basedir}/bin/phpunit" />
Но это также не удается с:
Project > phpunit:
#!/usr/bin/env php
PHPUnit 4.8.21 by Sebastian Bergmann and contributors.
unrecognized option -- f
Я бы предпочел не вмешиваться в мой PATH, потому что другие разработчики должны иметь возможность запускать phing phpunit-target без особых хлопот. Также глобально установленный phpunit — это не то, что я хотел бы, потому что я не хочу различий в версиях между разработчиками.
Вы уже пробовали задачу автозагрузки Phing?
https://www.phing.info/docs/guide/trunk/AutoloaderTask.html
Я использую это так:
Превращение вашего 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 использует локальные библиотеки вашего проекта, включая библиотеки PHPUnit, вам не нужно явно упоминать bin/phpunit
исполняемый файл.
Как phing знает, как смотреть на локальные зависимости проекта, мне неизвестно.
Мне удалось это исправить автозагрузкой файла 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>