phpunit 类 未在测试中加载

phpunit Classes are not loaded in tests

我尝试创建自己的库,它有自己的命名空间,因此可以包含在其他项目中。

我已经做到了并且 composer 安装 运行s 没有错误,但是当我尝试 运行 我的库中的单元测试时,它也没有找到任何 classes用于模拟或直接初始化。

我的文件夹结构是这样的:

ProjectFolder
|
\_src
|    \_Sap
|         \_Classes
|
\_tests     
|     \_Sap
|         \_TestClasses  
|     bootstrap.php
\_vendor

classes 中使用的名称空间遵循以下模式:

namespace PuC\Sap;

测试中使用的模式是这样的:

namespace PuC\Sap\Tests\Sap;

我的 composer.json 看起来像这样:

"autoload": {
    "psr-4": {
        "PuC\Sap\": "src/"
    }
},
"autoload-dev": {
    "psr-4": {
        "PuC\Sap\Tests\": "tests/"
    }
},

在我的测试文件夹中,我添加了一个 bootstrap.php 并在我的 phpunit.xml 文件中引用它:

<?php

$loader = @include __DIR__ . '/../vendor/autoload.php')
$loader->add('Sap', __DIR__);

不,当我在 bash 中 运行 这个时,我得到:

$ bin/phpunit tests/
PHPUnit 8.4.3 by Sebastian Bergmann and contributors.
......

7) PuC\Sap\Tests\Sap\HouseSoapServiceTest::testGetHouseData
Cannot stub or mock class or interface "PuC\Sap\Client\SapSoapClient" which does not exist

当我尝试直接初始化 class 时出现同样的问题。

我的路径错了吗?我的命名空间?

问题出在我的 src 文件夹中的附加文件夹。使用此修改后的结构,测试通过并找到 类:

ProjectFolder
|
\_src
|    \_Classes
|
\_tests     
|     \_Sap
|         \_TestClasses  
|     bootstrap.php
\_vendor

感谢 Robbie Averill 为我指明了正确的方向。