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

使用PhpUnit时,编写器无法加载加载程序

吴英武
2023-03-14

我正试图用PhpUnit和Composer。为此,我做了:

1添加phpUnit到req作曲家部分:

"require": {
    "php": ">=5.3.0"
},
"require-dev": {
    "phpunit/phpunit": "3.7.*"
},
"autoload": {
    "psr-0": {"PhpProject": "src/"}
}

2.根据需要安装:

php编写器。phar安装--dev

手术成功结束。

安装phpunit/phpunit(3.7.6)下载:100%

不幸的是,当我想做测试时,我得到了

./vendor/bin/phpunit PHP致命错误:对/home/serek/PHP/project/tests/bootstrap中的非对象调用成员函数add()。php在线12

出现问题的原因是返回Composer AutoloaderInit::getLoader();在供应商/自动加载中,将NULL返回到测试引导中。

任何想法如何可以解决没有黑客加载器?

代码:phpunnit.xml.dist

> <?xml version="1.0" encoding="UTF-8"?>
> 
> <phpunit bootstrap="tests/bootstrap.php" colors="true">
>     <testsuites>
>         <testsuite name="PhpProject Test Suite">
>             <directory>tests/PhpProject/</directory>
>         </testsuite>
>     </testsuites>
> 
>     <filter>
>         <whitelist>
>             <directory suffix=".php">src/PhpProject/</directory>
>         </whitelist>
>     </filter> </phpunit>

测试/bootstrap.php(这里我只需要自动加载器)

> $loader = require_once __DIR__ . "/../vendor/autoload.php";
> $loader->add('PhpProject\\', __DIR__); //<- this is problematic line 12 (comments has 9 lines) 

供应商/autoload.php

// autoload.php generated by Composer
require_once __DIR__ . '/composer' . '/autoload_real.php';
return ComposerAutoloaderInit::getLoader();

共有1个答案

柴晔
2023-03-14

问题是PHPUnit已经需要自动加载文件,因此您的require\u once调用没有执行,因此返回值没有设置(php没有保留require调用的返回值,因此require\u once在该用例中中断)。

您可以安全地将其更改为require,因为对于最新的composer版本,自动加载程序不再创建两次,多次需要它只会每次返回相同的实例。

 类似资料:
  • 我遇到了使用作曲家psr-4自动加载功能和PHPUnit的问题。问题发生在我的本地机器以及TravisCI版本上。单元测试无法找到我的类,而普通脚本可以找到。 当然,任何配置都有问题,但我无法找出我做错了什么。提前感谢你的帮助。 这是我的项目文件结构: 公共/ src/ http/ urlhelper。php 小黑 超文本传输协议/ urlhelper.test.php 这是我的作曲家的作品。js

  • 我试图使用高斯,但我得到以下致命错误: 致命错误:类GuzzleHttp\ClientInterface在第13行的 /var/www/myapp/vendor/guzzlehttp/guzzle/src/functions.php中找不到 我正在使用composer autoloader自动加载: 发生了什么事? 编辑 我的composer.json: 编辑2 我的作曲家。锁 编辑3 编写器配置

  • 我刚刚开始使用composer进行依赖关系管理,我很难弄清楚我是如何不遵守psr-4进行自动加载的,所以我来这里寻求建议。我有一个生成随机值的类,它已经在packagist上了。项目结构如下(我已将composer.json文件标记为A和B): 项目总监 composer.jsonA composer.jsonB 最后是RlandValue.php文件,它声明了ejFrancis命名空间 当我运行

  • 我不熟悉使用composer和psr-0。我尝试了一个使用composer和psr-0的小应用程序。我已经使用名称空间加载了一个特定的类。当我使用composer vendor/autoload调用一个类时,我得到了“未找到类”错误。 我的composer.json文件:/var/www/html/silexapp/composer.json 我的作曲家供应商自动加载文件:/var/www/htm

  • 我的代码有点奇怪: 当我在build.gradle中添加webrtc依赖项(编译'io.pristine: libJDle:11139@aar')时,会出现错误。 建筑格拉德尔: .... 编译io。原始:歌词:11139@aar' 编译项目(“:openCVLibrary2411”) .... 错误信息: 无法从加载程序dalvik.system加载opencv\u imgproc。PathCl

  • 我正在尝试在文本文件中运行一个基本的cucumber功能:calculator/features/adding.feature.txt: 当在../calculator/ directory并运行< code>cucumber,我得到的输出是:0场景0步骤0m0.000s 当我运行时,我得到了输出: 无法加载文件features/adding.feature.txt的“txt”编程语言:无法加载此