php - 在 PHPUnit 中使用 namespace 时“找不到类”

标签 php namespaces phpunit

我是 PHPUnit 的新手,在设置它以访问我的 PHP 文件时遇到了一些麻烦。我用于我的应用程序的目录结构是这样的:

./phpunit.xml

./lib/Application/
  -> Dir1/File1.php (namespace = Application\Dir1)
  -> Dir1/File2.php
  -> Dir2/File1.php (namespace = Application\Dir2)

./tests/Application/Tests
  -> Test1.php (namespace = Application\Tests)
  -> Test2.php 

在我的 PhpUnit.xml 中,我有:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit verbose="false">
  <testsuites>
      <testsuite name="Application">
          <directory>./tests/Application/Tests</directory>
      </testsuite>
  </testsuites>
  <logging>
       <log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>
       <log type="json" target="/tmp/phpunit-logfile.json"/>
  </logging>
  <filter>
        <whitelist>
            <directory suffix=".php">./lib</directory>
        </whitelist>
  </filter>
</phpunit>

在我的一个测试文件中,我打开:

namespace Application\Tests;

use Application\Dir1\File1;

class MyTest extends File1 {}

但它一直在说:

Class 'Application\Dir1\File1' not found

我哪里错了?

最佳答案

如果您使用 Composer 安装 PHPUnit,那么您可以使用 Composers 自动加载器。最简单的方法是添加:

"autoload":{
    "psr-0":{
        "your-app-directory":""
    }
}

到 composer.json

关于php - 在 PHPUnit 中使用 namespace 时“找不到类”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15719293/

相关文章:

php - 如何在 php 中取消设置命名空间以访问全局类

c# - c#中特定XML节点的命名空间

php - 如何覆盖 PHPUnit 中的异常类

php - 使用 PHP 时未从 firebird 数据库接收到正确的数据

php - laravel/laravel vs laravel/框架

java - JAXB 解码 - 未找到具有默认根元素的描述符...

php - 我的 PHPUnit 测试运行了,为什么我应该将其添加为 Composer 中的依赖项?

php exec() - mysqldump 创建一个空文件

php - 前置此 PHP 文件

selenium - 对刚刚执行了 type() 的元素进行 verifyText() 有意义吗?