在Symfony2中正确安装PHPUnit Database扩展

时间:2013-05-14 23:51:30

标签: database symfony phpunit symfony-2.2

我现在一直在为我的配置苦苦挣扎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/bin/php/php5.4.3/phpunit -c app

来自/ c / wamp / www / myproject的

给出了这个错误: sh.exe“:/c/wamp/bin/php/php5.4.3/phpunit:。\ php.exe:bad interpreter:没有这样的文件或目录

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我偶然发现了解决方案,却没有理解我想要做什么。实际上PHPUnit类是在PHP的全局空间而不是特定的命名空间中声明的。要指定这个,需要在类名前添加一个“\”,以便PHP查看这个全局空间。

所以解决方案就是写:

    return new \PHPUnit_Extensions_Database_DataSet_YamlDataSet(
                    dirname(FILE)."/eusertable.yml"
                    );