10

我正在尝试通过 HHVM 在虚拟 Ubuntu 12.04(64 位服务器)安装上运行 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 ......任何帮助将不胜感激。

4

3 回答 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 系统范围的 install, run hhvm /usr/local/bin/composer install --dev,它也可以工作。

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

  3. 为您的项目运行 PHPUnit:hhvm vendor/bin/phpunit [optional arguments]

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

于 2013-12-26T07:05:00.477 回答
5

只是要添加到@cabbey 的 asnwer 的注释:您可以IncludeSearchPaths使用以下-v选项设置值:

hhvm -v Server.IncludeSearchPaths.share=/usr/share/php/ $(which phpunit) MyTests.php
于 2014-03-17T10:42:35.123 回答
1

一个简单的解决方法是将 HHVM 配置为在其搜索路径中包含 PEAR 库。

我将此添加到我的 config.hdf 的服务器部分:

    IncludeSearchPaths {
        forphpunit = /usr/lib/php/
    }

然后将 phpunit 运行为:

hhvm -c ~/config.hdf /usr/bin/phpunit --bootstrap bootstrap.php MyTests.php
于 2014-01-02T18:00:35.417 回答