在PHPUnit中使用名称空间时,“未找到类" [英] 'Class not found' when using namespaces in PHPUnit

查看:80
本文介绍了在PHPUnit中使用名称空间时,“未找到类"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm new to PHPUnit and am having some trouble setting it up to access my PHP files. The directory structure I'm using for my app is this:

./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中,我有:

In my PhpUnit.xml, I have:

<?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>

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

And in one of my test files, I open with:

namespace Application\Tests;

use Application\Dir1\File1;

class MyTest extends File1 {}

但它一直在说:

找不到类'Application \ Dir1 \ File1'

Class 'Application\Dir1\File1' not found

我要去哪里错了?

推荐答案

即使使用use,仍必须使用includerequireinclude_oncerequire_once,或使用 spl_autoload_register 包含文件,就像这样:

Even if you use use, you still have to include the file, either by using include, require, include_once, or require_once, or by using spl_autoload_register to include the file, like so:

spl_autoload_register(function ($class)
{
    include '\lib\\' . $class . 'php';
});

当您尝试使用Application\Dir1\File1时,脚本将自动运行include '\lib\Application\Dir1\File1.php'

When you then try to use Application\Dir1\File1 the script will automatically run include '\lib\Application\Dir1\File1.php'

这篇关于在PHPUnit中使用名称空间时,“未找到类"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆