PHPUnit 是否可以在运行前临时重置系统路径


Can PHPUnit temporarily reset system paths before a run?

我正在使用phpunit-spiderling和PHPUnit在PhantomJS上运行浏览器/功能测试,通过jonnyw/php-phantomjs安装,这反过来又在<project>/bin中安装了phantomjs二进制文件。由于该文件夹不在系统路径中,因此我需要因此启动测试:

PATH=$PATH:`pwd`/bin ./phpunit test/browser/tests

这工作正常,但我希望当我在托管 CI 上设置它时,我需要将其压缩到 raw 命令中,没有环境前缀:

./phpunit test/browser/tests

我尝试了一个--bootstrap命令来运行system()命令来重置系统路径,但无济于事,而且我在手册中看不到任何描述如何通过phpunit.xml执行此操作的内容。不幸的是,Spiderling硬连接了Phantom命令,并且预计在系统路径中可见。

我也尝试过这样做是一种setUp()测试方法,但这为时已晚 - Spiderling 已经尝试过在随机端口上启动 PhantomJS,但失败了。

(命令./phpunit只是指向vendor/phpunit/phpunit/phpunit的符号链接,这是通过Composer安装的PHPUnit。

进一步回答这个问题,事实证明:

  • 托管 CI 工具提供了在 PHPUnit 之外实现此目的的方法
  • 我正在使用的特拉维斯无论如何都能在标准路径中提供phantomjs

因此,虽然事实证明我不需要这个,但似乎有两种方法可以实现它。由于我的方法需要执行反引号,我想知道env方法是否可能不起作用。但是,为了完整起见,以下是两者:

  • env方法是 .travis.yml 文件中的一个条目。
  • 您也可以尝试使用具有以下值的before_script键:

    before_script:
      - export PATH=`pwd`/bin:$PATH
    

    由于工作目录应设置为项目的根目录,因此pwd和子目录应将新路径添加到系统路径中。