PHPUnit:找不到我的包类

时间:2016-09-26 08:03:58

标签: 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\\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文件,但我仍然无法使其工作。

1 个答案:

答案 0 :(得分:0)

无法重现。使用以下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>