我在功能目录下有一些测试。但是当我尝试运行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
的最佳方法是什么?
任何帮助将不胜感激!
答案 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之前