PHPUnit找不到类命名空间

时间:2015-09-16 03:30:41

标签: php namespaces phpunit

我正在尝试使用PHPUnit运行一些单元测试,但是,当我使用命令行进行测试时,我的测试类无法从我的主类中找到命名空间。

这是我的文件夹结构:

data/ 
src/
    Dao/
    Entity/
        City.php
    Facade/
    SplClassLoader.php 
tests/
    Entity/
        CityTest.php
    bootstrap.php
    phpunit.xml 
vendor/ 
composer.json 
composer.lock

这是/ src / Entity /

中我的一个类的内容
<?php

namespace Entity;

class City
{
    /**
     * @var int
     */
    private $id;

我的phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="../vendor/autoload.php">
    <testsuites>
        <testsuite name="Application Test">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

和我的CityTest.php

<?php

class CityTest extends PHPUnit_Framework_TestCase
{
    public function testAdd()
    {
        $city = new Entity\City(1, "London");
    }
}

当我运行命令phpunit tests/Entity/CityTest.php时,我收到此消息错误:

  

PHP致命错误:未找到“实体\城市”类

我该怎么做才能解决这个问题?

谢谢。

更新

我已经通过一些更新解决了我的问题。这是我的最终文件夹结构:

data/  
src/  
tests/  
vendor/
composer.json*  
composer.lock*
phpunit.xml*

phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
        >
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>
</phpunit>

composer.json

"require-dev": {
    "phpunit/phpunit": "4.8.*"
  },

  "config": {
    "process-timeout": 600,
    "preferred-install": "dist",
    "github-protocols": ["https"]
  },

  "autoload": {
    "psr-4": {
      "": "src/"
    }
  },

1 个答案:

答案 0 :(得分:0)

我们的想法是使用“autoload”将项目的源代码添加到Composer。

请参阅https://getcomposer.org/doc/01-basic-usage.md#autoloading