当前位置: 首页 > 知识库问答 >
问题:

运行PHPUnit测试会产生“未找到类”错误

江正德
2023-03-14

这是一个关于PHP单元测试的问题,给出了一个类NotFound错误。

背景资料

我正在使用Zend Studio 10.5开发Zend Framework 2应用程序。我加载了一些模块,包括ZfcUserBjyAuthorize

FedcoUser是具有使用BJYAAuthorize的保护规则的控制器保护的模块:

<?php
namespace FedcoUser\Controller;

use Zend\View\Model\ViewModel;
use ZfcUser\Controller\UserController as ZfcUserController;

class MachinistController extends ZfcUserController
{
    public function indexAction()
    {
        if (!$this->zfcUserAuthentication()->hasIdentity()) {
            return $this->redirect()->toRoute($this->getOptions()->getLoginRedirectRoute());
        }

        return new ViewModel();
    }
}

使用Zend Studio 10.5本机菜单,我为上面的控制器创建了一个测试用例。当我运行它时,我得到以下错误:

Debug Error: FedcoUser/Controller/MachinistController.php line 8 - Class 'ZfcUser\Controller\UserController' not found

我的假设是,PHPUnit的autoloader不知何故无法确定类的位置,因为它找不到的类位于何处

vendor/zf-commons/zfc-user/src/ZfcUser/Controller/UserController.php

我还不熟悉PHPUnit如何工作来修复这个错误。PHPUnit有自动装弹机吗?在我的模块的/test/文件夹中有名为bootstrap.phpphpunit.xmlTestConfiguration.php的文件,如果有帮助的话。我尝试将各种模块和路径随机添加到TestConfiguration.php文件中,如下所示,但没有任何帮助:

 $additionalModulePaths = array(
     'ZfcUser' => realpath('vendor/zf-commons/zfc-user/src/ZfcUser/Controller/UserController.php'),
);

你能帮忙吗?

共有1个答案

咸亦
2023-03-14

我最终在我的TestConfiguration.php文件中将其他名称空间加载到我的配置中:

$additionalNamespaces = array(
    'ZfcUser\Controller' => __DIR__ . '/../../../vendor/zf-commons/zfc-user/src/ZfcUser/Controller/'
);

这非常适合我的bootstrap.php,它有以下代码:

// setup autoloader
AutoloaderFactory::factory(
    array(
        'Zend\Loader\StandardAutoloader' => array(
            StandardAutoloader::AUTOREGISTER_ZF => true,
            StandardAutoloader::ACT_AS_FALLBACK => false,
            StandardAutoloader::LOAD_NS => $additionalNamespaces,
        )
    )
);
 类似资料:
  • 我是PHPUnit和单元测试的新手,所以我通过作曲家安装了PHPUnit和phar,一切都很好,直到我尝试开始我的简单测试。我使用PhpStorm,我可以看到所有的类都是自动加载的,但是当我试图开始我的测试时,我得到了一个错误: 我不明白他为什么要在高于PHPUnit的文件夹中查找它? 我试图在composer中配置自动加载部分。json和检查phpunit中的设置。xml,但什么都不起作用。 加

  • 在Eclipse PDT中运行PHPUnit测试时,右键单击test文件夹并选择run As>PHPUnit Testm 生成此错误: 我导航到Eclipse日志文件,找到了以下文本: Eclipse.buildid=4.8.0.i20180611-0500 参数:-product org.eclipse.epp.package.php.product命令行 参数:-OS win32-WS win

  • 在试图用PHPUnit设置Eclipse作为单元测试库时,我陷入了试图运行一个简单测试用例的困境。作为参考,我按照本教程使用PHPUnit/Xdebug/Makegood来设置Eclipse,唯一偏离给出的指导方针是为PHPUnit/Makegood设置以下配置文件: 现在,问题的根源在于,我似乎无法使用Makegood从Eclipse运行PHPUnit测试。我编写的唯一测试(位于名为test.p

  • 我想运行PHPUnit 6.0。*PhpStorm中的测试。但当我想要执行单个类的测试时,它向我显示了以下错误:“测试类未指定或无效”。 我在PHPUnit中加入了作曲家。这里是内容: 在命令行中运行测试正在工作。输出: 一些补充信息: PhpStorm设置: PHP语言级别:7.1 CLI解释器:7.1 PHPUnit使用Composer autoloader(链接到autoload.php)

  • 我有一个类似的问题,在这里描述: 一切都按照我的预期工作;我的代码访问数据库并打印输出,不管我是从命令行界面还是从网络浏览器运行。同样的结果。如果我用PHPUnit在Eclipse中运行它,我会得到一个错误: 哪些点位于下一行: 此代码打印出“是”。 还有一点需要指出的是,我在上面代码所在的类中使用自己的名称空间。我的单元测试在全局命名空间中。 我已经按照上面的URL中的步骤,但是,唉,没有用。:

  • 我正在用开发一个API,我目前正在尝试用实现一些单元测试。当我通过命令行运行测试时,我一直遇到一个错误: 我的composer.json是这样的: 我的测试类是这样的: 如果我注释掉整个第二个测试,留下use语句,第一个测试将毫无问题地通过。我认为这可能与测试文件的位置有关,因此我将其移动到classes/app目录,在那里我有其他具有类似导入的类,并且我看到了相同的结果,因此我认为这与文件所在的