Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPUnit:找不到我的包类_Php_Json_Laravel_Laravel 5_Phpunit - Fatal编程技术网

PHPUnit:找不到我的包类

PHPUnit:找不到我的包类,php,json,laravel,laravel-5,phpunit,Php,Json,Laravel,Laravel 5,Phpunit,我正在为Laravel 5编写一个软件包,我的PHPUnit测试失败,出现错误 “找不到类VendorName\PackageName\MyPackage” 我仍然不知道是什么原因造成了这个错误,如果有人帮助我,我会很高兴的 我的结构是这样的: src/ ├─ MyPackage.php test/ ├─ MyPackageTest.php composer.json composer.lock Composer.json "psr-4": { "VendorName\

我正在为Laravel 5编写一个软件包,我的PHPUnit测试失败,出现错误

“找不到类VendorName\PackageName\MyPackage”

我仍然不知道是什么原因造成了这个错误,如果有人帮助我,我会很高兴的

我的结构是这样的:

src/
    ├─ MyPackage.php
test/
    ├─ MyPackageTest.php
composer.json
composer.lock
Composer.json

"psr-4": {
    "VendorName\\PackageName\\": "src/"
},
"autoload-dev": {
    "psr-4": {
        "VendorName\\PackageName\\Test\\": "tests/"
    }
},
这(可能)就是我的错误来源:

MyPackageTest.php

namespace VendorName\PackageName\Test;

use PHPUnit\Framework\TestCase;
use VendorName\PackageName\MyPackage;

class MyPackageTest extends TestCase
{
    protected $app;

    public function setUp()
    {
        $this->app = new MyPackage();
    }
}
这是我的phpunit.xml文件

<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.5/phpunit.xsd"
         backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         covertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
>
         <testsuites>
           <testsuite name="Interswitch Test Suite">
             <directory suffix=".php">./tests/</directory>
           </testsuite>
         </testsuites>
  </phpunit>

/测试/
我做了通常的
composer dump autoload
仪式来让它正常工作,但都没有用


我还使用上面的内容更改了Laravel项目根目录中的
composer.json
文件,但仍然无法使其正常工作。

无法复制。使用以下composer.json对我非常有效:

{
    "require": {
       "phpunit/phpunit": "^5.5"
    },
    "autoload" : {
        "psr-4": {
            "VendorName\\PackageName\\": "src/"
        }
    }
}
和phpunit.xml:

<phpunit
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.5/phpunit.xsd"
    bootstrap="./vendor/autoload.php">

    <testsuites>
        <testsuite name="Unit">
            <directory suffix="Test.php">test</directory>
        </testsuite>
    </testsuites>
</phpunit>

测试

尝试要求供应商自动加载文件或在phpunit.xml文件中引导它。@Follio我已经这样做了
bootstrap=“vendor/autoload.php”
在应用程序中添加require provider和别名。php@Komal首先肯定是为了让软件包正常工作。目前仍使用PHPUnit Test.wird。我仍然有这个问题。我只是在我的原始帖子中加入了
phpunit.xml
配置。如果你能帮我检查一下我是否在正轨上,我会很高兴的。你确定你正在使用这个文件吗?我的意思是,您是否以
vendor/bin/phpunit-cphppunit.xml
的身份运行测试?您的供应商/composer/autoload_psr4.php是否包含“'VendorName\\PackageName\\\”=>数组($baseDir./src”)?您使用的是确切的名称,还是其他名称(名称区分大小写)?终于解决了这个问题!我检查了我的
供应商/composer/autoload\u psr4
。它与laravel的composer.json文件发生冲突,因为我之前在该文件中转储了包名称空间,并且在包的composer.json中转储了测试名称空间。我已经纠正了,PHPUnit的断言现在是绿色的:D.非常感谢Alex。