Drupal 10.x PHPUnit测试中共享测试工具类无法自动加载
问题原因及解决办法
1. 核心原因:测试目录自动加载规则限制
Drupal默认的Composer自动配置仅对Tests目录下**继承PHPUnit官方测试基类(如BrowserTestBase、KernelTestBase)**的类启用自动加载。你创建的MyTestObject属于纯测试工具类,不在默认自动加载范围内,因此PHP找不到该类。
2. 具体解决方法
方法一:手动配置Composer自动加载(推荐)
在模块根目录的composer.json(无则新建)中,添加测试工具类的PSR-4自动加载映射:
{ "autoload-dev": { "psr-4": { "Drupal\\Tests\\my_module\\Utilities\\": "tests/src/Utilities/" } } }
执行命令更新自动加载缓存:
composer dump-autoload -o
方法二:手动引入文件
如果不想修改Composer配置,可在测试类文件顶部直接引入工具类文件:
require_once __DIR__ . '/../Utilities/MyTestObject.php';
方法三:整合到测试类文件
若工具类逻辑简单,可直接将MyTestObject的代码写在测试类所在的文件中,省去单独文件的加载问题。
额外检查项
- 确保文件路径与命名空间严格匹配:
tests/src/Utilities/MyTestObject.php对应命名空间Drupal\Tests\my_module\Utilities\MyTestObject,Linux环境需注意大小写一致。 - 不要将测试工具类放到模块
src/目录下,该目录用于生产代码,测试类必须留在tests/目录内。
内容的提问来源于stack exchange,提问作者GuyPaddock
相关产品推荐
相关产品推荐

