我尝试使用phing创建构建过程。在此过程中,我想运行composer安装脚本和phpunit,它由composer
安装在我的构建文件中,我有2个目标。
<target name="composer">
<composer command="install" composer="./composer.phar" />
<autoloader autoloaderpath="./vendor/autoload.php" />
</target>
<target name="phpunit" depends="composer">
<if>
<os family="windows" />
<then>
<property name="phpunit.executable" value="phpunit.bat" />
</then>
<else>
<property name="phpunit.executable" value="phpunit" />
</else>
</if>
<exec executable="vendor/bin/${phpunit.executable}"
dir="${project.basedir}" level="debug"
returnProperty="phpunit.return">
<arg line="--configuration" />
<arg file="${project.basedir}/phpunit.xml" />
</exec>
</target>
composer.phar和phpunit.xml位于我的项目库中。 现在,如果我运行phpunit目标,我可以看到在需要时检查和安装依赖项。 但PHPUnit只返回
Sebastian Bergmann和贡献者的PHPUnit 5.7.21。
就是这样。实际上没有测试。似乎永远不会读取配置文件。
如果我从phpunit目标中删除了依赖项并运行,则实际完成测试并创建日志和覆盖率报告。 我使用exec而不是phpunit任务,因为phings代码覆盖似乎在命名空间中的反斜杠有问题。
这实际上是一个Symfony项目并且正在调用
bin/console cache:warmup -e test
修复了问题
尽管在composer安装之后从命令行调用PHPUnit确实会运行测试。
在phing或PHPUnit中我可以在哪里更改超时吗? php的最大执行时间设置为0。
答案 0 :(得分:1)
如何调整build.xml
来创建任务来预热缓存:
<target name="cache-warmup">
<exec command="bin/console cache:warmup -e test" />
</target>
然后让phpunit
任务也依赖于该任务:
<target name="phpunit" depends="composer cache-warmup">
...
</target>
答案 1 :(得分:0)
从Phing 3.x开始,您还可以使用SymfonyConsoleTask
<project name="symfony-cmd" default="phpunit" basedir=".">
<target name="setup">
<composer command="install" composer="./composer.phar" />
<autoloader autoloaderpath="./vendor/autoload.php" />
<symfonyconsole console="./bin/console" command="cache:warmup">
<arg name="env" value="test" />
</symfonyconsole>
</target>
<target name="phpunit" depends="setup">
<!-- ... -->
</target>
</project>