Phing无法看到PHPUnit

时间:2014-04-30 00:40:28

标签: php jenkins phpunit phing

我正在尝试设置一个新的Continuous Integration服务器,它利用Phing和PHPUnit自动运行测试用例。

我已经安装了Phing with Pear:

pear channel-discover pear.phing.info
pear install phing/phing

我使用新的PHAR方法安装了PHPUnit:

wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
mv phpunit.phar /usr/local/bin/phpunit

然后我转到我的build.xml文件所在的目录,行为,看起来Phing不知道PHPUnit在哪里。

[jenkins@leroy workspace]$ phing
Buildfile: /home/jenkins/.jenkins/jobs/Framework/workspace/build.xml

Framework > test:

 [echo] Running Tests
Execution of target "test" failed for the following reason: /home/jenkins/.jenkins/jobs/Framework/workspace/build.xml:9:37: /home/jenkins/.jenkins/jobs/Framework/workspace/build.xml:9:37: PHPUnitTask requires PHPUnit to be installed

BUILD FAILED
/home/jenkins/.jenkins/jobs/Framework/workspace/build.xml:9:37:
/home/jenkins/.jenkins/jobs/Framework/workspace/build.xml:9:37: PHPUnitTask requires PHPUnit to be installed
Total time: 0.0764 seconds

[jenkins@leroy workspace]$

检查Phing和PHPUnit的位置:

[jenkins@leroy workspace]$ which phing
/usr/bin/phing
[jenkins@leroy workspace]$ which phpunit
/usr/local/bin/phpunit

并确保PHP足够新:

[jenkins@leroy workspace]$ php -v
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57) 

我正在做所有这一切,因为我们正在用这个新的Jenkins服务器替换旧的Jenkins服务器。试图使用最新的软件,但我无法弄清楚如何告诉Phing在哪里找到PHPUnit。

提前感谢您的帮助!

大卫

4 个答案:

答案 0 :(得分:4)

似乎将pharlocation属性添加到phpunit任务元素,指向您当地的phpunit可执行文件,完成工作:

<phpunit haltonfailure="true" haltonerror="true" 
    bootstrap="./fw_init.php" 
    pharlocation="/usr/local/bin/phpunit">
        <formatter type="plain" usefile="false" />
        ...
</phpunit>

答案 1 :(得分:2)

看起来phing和PHPUnit的最新4.x版本存在一些实际问题:http://www.phing.info/trac/ticket/1091

为了解决这个问题,我删除了PHPUnit 4并指定了旧版本:

pear install phpunit/PHPUnit-3.7.35

Phing和PHPUnit此时立即工作。

答案 2 :(得分:0)

这是一个有完全相同问题的家伙:How do I tell Phing where PHPUnit is installed?

他的理论是:

  

此计算机上的PHP版本可能太旧,无法处理PHAR存档

如果他是对的,我无法发表评论,但该问题没有收到作者以外任何人的回复

答案 3 :(得分:0)

也许是一个愚蠢的评论,但你的PHP包含路径中有/usr/local/bin/phpunit吗?

当我从包含路径中删除phpunit.phar的位置时,我收到同样的错误。