PHPUnit 覆盖模式导致致命错误“无法声明类...因为该名称已在使用中...”

问题描述 投票:0回答:1

我正在构建一个

Laravel
项目,现在我正在为其创建测试。我正在使用:

  • Laravel
    10.3.1
  • PHP
    8.2.3
  • X调试
    3.2.0
  • PHPUnit
    9.6.4
  • 害虫
    1.22.5

由于 Pest,我无法将 PHPUnit 更新为

^10.0
请阅读此处)。

但是,我面临以下问题。当我使用

php artisan test
./vendor/bin/pest
执行测试时,一切正常,没有错误。但是当我像这样添加
--coverage
模式标志时
XDEBUG_MODE=coverage ./vendor/bin/pest --coverage
我收到以下错误:

致命错误:无法声明类 App\Vendor\MediaLibrary\ModifiedMedia,因为该名称已在 用于 /Users/alex/Desktop/Bitbucket/Valet/dealbee-backend/app/Vendor/MediaLibrary/ModifiedMedia.php 8号线

我已经尝试过以下方法:

  • php artisan optimize:clear
  • composer dump-autoload
  • composer clear-cache
  • php artisan cache:clear
  • 删除
    /vendor
    文件夹并运行
    composer install

他们都没有帮助我解决问题。当我在存储库中运行

find . | grep ModifiedMedia.php
时,我只得到一个匹配项,这是唯一的单个匹配项:
./app/Vendor/MediaLibrary/ModifiedMedia.php

这意味着我的存储库中没有其他名为

ModifiedMedia.php
的类。

我遇到了this GitHub 问题。他们建议在

processUncoveredFilesFromWhitelist
文件中将
false
设置为
phpunit.xml
。我没有尝试,因为这不是最好的解决方案。但我确实将
<coverage processUncoveredFiles="true">
设置为
false
只是为了测试这是否有效,是的,它确实有效。当
processUncoveredFiles
设置为 false 时,我不再收到上面的错误。

但这并不是解决方案。我什至不知道

processUncoveredFiles
在做什么以及为什么它会起作用。

任何人都可以帮我解决这个问题而不将

processUncoveredFiles
processUncoveredFilesFromWhitelist
设置为
false
吗?

亲切的问候

php laravel phpunit code-coverage xdebug
1个回答
0
投票

分享我的问题,我发现了同样的问题。我在测试中使用了 Mockery,同一个类后来导致 phpunit 代码覆盖率报告生成器崩溃。 我消除了嘲笑,然后报道又回来了。我现在正在以不同的方式重写测试。

© www.soinside.com 2019 - 2024. All rights reserved.