TravisCI PHPUnit致命错误 - 调用未定义的方法PHPUnit_Util_Configuration :: getTestdoxGroupConfiguration()

时间:2017-01-27 02:08:14

标签: php phpunit travis-ci

由于引用PHPUnit_Util_Configuration::getTestdoxGroupConfiguration()的致命错误导致我的TravisCI构建失败,即使PHPUnit在本地运行时没有问题。我已经验证了TravisCI上的Composer正在安装与我在本地安装相同版本的PHPUnit。

我注意到recent patch具体引用了testdox组配置,但我无法弄清楚为什么这个更改可能会破坏TravisCI中的PHPUnit而不是我的本地版本。

这是TravisCI的作曲家:

- Installing phpunit/phpunit (5.7.6) Downloading: 100%

这是来自TravisCI的致命错误和堆栈跟踪:

PHP Fatal error:  Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in /home/travis/build/twistofreality/dilmun/vendor/phpunit/phpunit/src/TextUI/TestRunner.php on line 1042
PHP Stack trace:
PHP   1. {main}() /home/travis/.phpenv/versions/5.6.5/bin/phpunit:0
PHP   2. PHPUnit_TextUI_Command::main() /home/travis/.phpenv/versions/5.6.5/bin/phpunit:722
PHP   3. PHPUnit_TextUI_Command->run() phar:///home/travis/.phpenv/versions/5.6.5/bin/phpunit/phpunit/TextUI/Command.php:104
PHP   4. PHPUnit_TextUI_TestRunner->doRun() phar:///home/travis/.phpenv/versions/5.6.5/bin/phpunit/phpunit/TextUI/Command.php:152
PHP   5. PHPUnit_TextUI_TestRunner->handleConfiguration() /home/travis/build/twistofreality/dilmun/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:163

2 个答案:

答案 0 :(得分:9)

问题是PHPUnit的全局TravisCI版本与Composer正在安装的版本之间的版本不匹配。请注意堆栈跟踪的最后两行:

PHP   4. PHPUnit_TextUI_TestRunner->doRun() phar:///home/travis/.phpenv/versions/5.6.5/bin/phpunit/phpunit/TextUI/Command.php:152
PHP   5. PHPUnit_TextUI_TestRunner->handleConfiguration() /home/travis/build/twistofreality/dilmun/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:163

最后一行引用vendor / phpunit(在本例中,版本为5.7.6,根据Composer输出),而倒数第二行引用了TravisCI的全局bin / phpunit(版本5.6.5)。可能是最近版本中的补丁在尝试调用全局版本时会出现问题。

更新.travis.yml以使用vendor/bin/phpunit(加上任何标志)来使用Composer安装的版本可以解决问题。具体来说,将此行添加到.travis.yml(或者,就像在我的情况下,修改现有的phpunit行),可以解决这个问题:

script:
    - vendor/bin/phpunit [phpunit flags here]

答案 1 :(得分:1)

只需添加

script:
  - vendor/bin/phpunit

到您的travis.yml文件