我现在一直在为我的配置苦苦挣扎2天。
当我从我的bash模拟器启动phpunit时(在Windows 7下工作)
bin / phpunit -c app
我收到以下错误:
从C:\ wamp \ www \ myproject \ app \ phpunit.xml.dist读取配置
.. PHP致命错误:类 “MyProject的\企业\测试\实体\ PHPUnit_Extensions_Databas 找不到e_DataSet_YamlDataSet' C:\ wamp \ www \ myproject \ src \ myproject \ Business \ Tests \ eUserManagerTest.php on line 39
我的环境试图用 PHPUnit_Extensions_Database_DataSet_YamlDataSet 的路径作为后缀
myproject \ Business \ Tests \ Entity ,而require_once语句指定在 PHPUnit / Extensions / Database / DataSet / YamlDataSet.php 中定义。
下面的“新”声明会导致这个错误的完成暂定:
namespace myproject\Business\Tests\Entity;
require_once "PHPUnit/Autoload.php";
require_once "PHPUnit/Extensions/Database/Autoload.php";
require_once "PHPUnit/Extensions/Database/DataSet/YamlDataSet.php';
use \PDO;
use myproject\Business\Entity\eUserManager;
class eUserManagerTest extends \PHPUnit_Extensions_Database_TestCase
{
...
/**
* @return PHPUnit_Extensions_Database_DataSet_IDataSet
*/
protected function getDataSet()
{
return new PHPUnit_Extensions_Database_DataSet_YamlDataSet(
dirname(__FILE__)."/eusertable.yml"
);
}
我的问题是弄清楚为什么*!ù%它没有找到正确的路径(如require_once中所定义)。
也许是一个主角:我在文件树中发现了两个不同的phpunit exe文件:
/ C /瓦帕/网络/ myproject的/ bin中/ PHPUnit的
和
/c/wamp/bin/php/php5.4.3/phpunit
我认为第一个是在我安装phpunit时创建的,方法是在composer.json文件中声明它+启动:
作曲家更新
这适用于通过启动不涉及数据库的单元测试:
bin / phpunit -c app
第二个已经通过pear安装,如phpunit文档中所述: http://phpunit.de/manual/3.8/en/database.html
数据库处理的类定义位于第二个位置:
/c/wamp/bin/php/php5.4.3/phpunit/pear/PHPUnit/Extensions/Database
这就是我希望php考虑实例化我的课程的地方。
所以我的提示是这个问题可能与这个双phpunit安装(symfony本身和php5.4.3目录中的另一个)有关。
我做得好吗?
我的安装程序有错吗?
Symfony如何通过pear了解这个数据库扩展安装?
注意:启动:
来自/ c / wamp / www / myproject的/c/wamp/bin/php/php5.4.3/phpunit -c app
给出了这个错误: sh.exe“:/c/wamp/bin/php/php5.4.3/phpunit:。\ php.exe:bad interpreter:没有这样的文件或目录
感谢您的帮助
答案 0 :(得分:0)
我偶然发现了解决方案,却没有理解我想要做什么。实际上PHPUnit类是在PHP的全局空间而不是特定的命名空间中声明的。要指定这个,需要在类名前添加一个“\”,以便PHP查看这个全局空间。
所以解决方案就是写:
return new \PHPUnit_Extensions_Database_DataSet_YamlDataSet(
dirname(FILE)."/eusertable.yml"
);