如何将INCLUDE_PATH变量设置为Behat的Composer目录下的PHPUnit库

时间:2014-07-25 12:38:31

标签: php behat

我在功能目录下有一些测试。但是当我尝试运行behat时,我收到以下错误:

$ ls
behat.yml  features

$ behat
PHP Warning:  Module 'memcache' already loaded in Unknown on line 0
PHP Warning:  require_once(PHPUnit/Autoload.php): failed to open stream: No such file or directory in $HOME/workspace/ums/api/trunk/tests/functional/features/bootstrap/FeatureContext.php on line 24
PHP Fatal error:  require_once(): Failed opening required 'PHPUnit/Autoload.php' (include_path='.:/usr/share/pear:/usr/share/php') in $HOME/workspace/ums/api/trunk/tests/functional/features/bootstrap/FeatureContext.php on line 24

由于PHPUnit不再可以使用PEAR安装,我最终使用Composer。我的PHPUnit库安装在

下面
$ sudo find / -name  PHPUnit
/HOME/.composer/vendor/phpunit/phpunit/PHPUnit
/HOME/.composer/vendor/phpunit/phpunit-mock-objects/PHPUnit
/tmp/ZendFramework-1.11.0/library/Zend/Test/PHPUnit
/tmp/ZendFramework-1.11.0/tests/Zend/Test/PHPUnit
/usr/share/php/Zend/Test/PHPUnit
/usr/share/php/Zend-2.0/Test/PHPUnit

在不更改include_path文件而不在每个php.ini示例类型类中使用set_include_path()方法设置FeatureContext.php的最佳方法是什么?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

我使用phpunit和Behat遇到了同样的错误,我确实设法使用以下代码克服它:

require_once __DIR__.'/../../vendor/autoload.php';
require_once __DIR__.'/../../vendor/phpunit/phpunit/src/Framework/Assert/Functions.php';

鉴于' bootstrap'文件夹只是远离项目根目录的两个文件夹。希望它有所帮助。

通常我在我的开发和测试(CI服务器)机器上全局安装PHPUnit(通过composer),因此在运行测试时我不会遇到任何麻烦。另外,为了使我最喜欢的IDE(PhpStorm)的自动完成正常工作,我将库包含在项目的composer.json中作为开发需求。对于使用Behat并由团队开发的项目,最好的方法是将其包含在项目中,这样开发人员在运行测试时就不会遇到麻烦。

答案 1 :(得分:-1)

您想使用composer附带的自动加载器。尝试添加

require_once 'path/to/vendor/autoload.php'

使用PHPUnit之前