2015-08-28 91 views
4

我在嘗試在Travis CI上運行PHP單元測試時遇到一個奇怪的問題。PHPUnit「無法讀取phpunit.xml」在Travis CI上

.travis.yml

sudo: false 
language: php 
php: 
    - 5.4 

env: 
    - VUFIND_HOME=$PWD VUFIND_LOCAL_DIR=$PWD/local 

before_script: 
    - pear install pear/PHP_CodeSniffer 
    - pear channel-discover pear.phing.info 
    - pear install phing/phing 
    - composer global require fabpot/php-cs-fixer 
    - export PATH="$HOME/.composer/vendor/bin:$PATH" 
    - phpenv rehash 

script: 
    - phpunit --stderr --configuration module/VuFind/tests/phpunit.xml 
    - phpunit --stderr --configuration module/Swissbib/tests/phpunit.xml 
    - phpcs --standard=PEAR --ignore=*/config/*,*/tests/* --extensions=php $PWD/module 
    - phing php-cs-fixer-dryrun 

模塊/ VuFind /測試/ phpunit.xml是第三方框架

模塊/ Swissbib /測試/ phpunit.xml是我們自己的代碼

模塊/ Swissbib /測試/ phpunit.xml

<phpunit bootstrap="Bootstrap.php"> 
    <testsuites> 
     <testsuite name="sbvfrd"> 
      <directory>.</directory> 
     </testsuite> 
    </testsuites> 
</phpunit> 

來自第三方框架的測試無誤地運行。我們自己的測試不起作用,我們收到錯誤信息:

$ phpunit --stderr --configuration module/Swissbib/tests/phpunit.xml 
Could not read "module/Swissbib/tests/phpunit.xml". 

本地(Mac OS X)所有測試都運行完畢。奇怪的是,模塊/ Swissbib/tests/phpunit.xml中定義的Bootstrap.php完全通過Travis CI運行,我使用echo語句驗證了這一點。儘管如此,phpunit告訴我們它無法讀取phpunit.xml。

特拉維斯:https://travis-ci.org/swissbib/vufind

回購:https://github.com/swissbib/vufind(開發分支)

任何想法可能是想錯了?

回答

4

我通過下載phpunit源代碼並用它進行調試,找到了解決方案。

我們將Bootstrap.php文件中的目錄更改爲不同的位置,然後運行phpunit命令。我們從項目根文件夾運行phpunit命令,然後將工作目錄更改爲tests文件夾,因爲我們使用的是相對路徑。我將所有內容都改爲絕對路徑,因此我們不必再更改工作目錄。

底線:不要更改引導文件中的目錄,因爲它會導致phpunit失敗,並顯示以下錯誤消息:無法讀取phpunit.xml。