使用HHVM(HipHop)运行phpunit测试

10

我正在尝试在虚拟的Ubuntu 12.04(64位服务器)安装中通过HHVM运行PHPUnit单元测试。这些测试通常使用位于我的测试目录中的phpunit.xml文件运行,该文件包括一个引导文件以处理自动加载,并且在普通的php安装中测试运行良好。然而,我不断收到以下错误:

HipHop Fatal error: File not found: File/Iterator/Autoload.php in /usr/share/php/PHPUnit/Autoload.php on line 64

执行时:

hhvm -f /usr/bin/phpunit /path/to/my/testsDirectory/SomeTest.php

我还无法弄清楚如何使用引导或配置文件在hhvm下运行phpunit... 如有帮助将不胜感激。


你必须确保PEAR在你的包含路径中,并且你已经安装了PEAR php-file-iterator包。 - hakre
1
不了解您的完整设置,上面的路径注释可能确实是正确的(我看到其他SO问题给出了类似的答案)。关于我如何使用HHVM设置我的PHPUnit测试,您可以访问这里:https://github.com/facebook/hiphop-php/wiki/OSS-PHP-Frameworks-Unit-Testing:-General - Joel Marcey
3个回答

11

HHVM 2.4+

HHVM 2.4.0刚刚发布,并且具备完整的phpunit支持!只需提供phpunit二进制文件的完整路径,就像这样:

$ hhvm /usr/bin/phpunit

干杯!


HHVM 2.3

按照 HHVM wiki 的逐步指南进行测试,它可以正常工作。这是一个简化的指南:

在您的项目中,将以下条目添加到 composer.json 文件中:

"require-dev": {
    "phpunit/phpunit": "3.7.*",
    "phpunit/php-invoker": "1.1.3",
    "phpunit/dbunit": "1.2.3",
    "phpunit/phpunit-selenium": "1.3.2",
    "phpunit/phpunit-story": "1.0.2"
}
  1. 运行命令hhvm composer.phar install --dev。如果您已经全局安装了composer,请运行hhvm /usr/local/bin/composer install --dev,这也可以。

  2. 将创建一个vendor目录。phpunit“二进制文件”位于vendor/bin/phpunit

  3. 要为您的项目运行PHPUnit:hhvm vendor/bin/phpunit [可选参数]

注意:可能在不久的将来,hhvm /usr/local/bin/phpunit [可选参数]将按预期工作,但现在这是我们拥有的最简单的选择。


1
vendor/bin/phpunit现在是一个sh脚本,所以你必须运行hhvm vendor/phpunit/phpunit/phpunit才能使其工作! - BenMorel
[optional arguments] 在 PHPUnit 5.7 中仍然无法正常工作。 - The Onin

5

补充一下@cabbey的回答:你可以使用-v选项设置IncludeSearchPaths的值:

hhvm -v Server.IncludeSearchPaths.share=/usr/share/php/ $(which phpunit) MyTests.php

1
一个简单的解决方法是将HHVM配置为在其搜索路径中包含PEAR库。
我在我的config.hdf的Server部分添加了以下内容:
    IncludeSearchPaths {
        forphpunit = /usr/lib/php/
    }

然后以以下方式运行phpunit:
hhvm -c ~/config.hdf /usr/bin/phpunit --bootstrap bootstrap.php MyTests.php

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接