【问题标题】:Class '..\Unit\UnitTestCase' not found找不到类“..\Unit\UnitTestCase”
【发布时间】:2020-08-05 04:27:52
【问题描述】:

我正在将 laravel5.5.* 升级到 5.6.0。作曲家安装运行良好。我正在尝试运行出现此错误的单元测试。

找不到类“..\Unit\UnitTestCase”

这是错误的堆栈跟踪:

致命错误:未捕获的错误:类 'PhiraterTest\Unit\UnitTestCase' 没有找到 /home/vagrant/code/phirater-l51/tests/unit/Phirater/AdditionalCurrencies/CreateAdditionalCurrencyCommandHandlerTest.php:11 堆栈跟踪: #0 /home/vagrant/code/phirater-l51/vendor/phpunit/phpunit/src/Util/Fileloader.php(64): 包含一次() #1 /home/vagrant/code/phirater-l51/vendor/phpunit/phpunit/src/Util/Fileloader.php(48): PHPUnit\Util\Fileloader::load('/home/vagrant/c...') #2 /home/vagrant/code/phirater-l51/vendor/phpunit/phpunit/src/Framework/TestSuite.php(325): PHPUnit\Util\Fileloader::checkAndLoad('/home/vagrant/c...') #3 /home/vagrant/code/phirater-l51/vendor/phpunit/phpunit/src/Framework/TestSuite.php(403): PHPUnit\Framework\TestSuite->addTestFile('/home/vagrant/c...') #4 /home/vagrant/code/phirater-l51/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php(65): PHPUnit\Framework\TestSuite->addTestFiles(Array) #5 /home/vagrant/code/phirater-l51/vendor/phpunit/phpunit/src/TextUI/Command.php(169): PHPUnit\Runner\BaseTestRunner->getTest('tes in /home/vagrant/code/phirater-l51/tests/unit/Phirater/AdditionalCurrencies/CreateAdditionalCurrencyCommandHandlerTest.php 在第 11 行

我的单元测试在tests/ 目录中。我的UnitTestCase 类由\TestCase 类扩展,TestCase 类由BrowserKitTestCase 扩展。我在这里做错了什么?有什么解决办法?

【问题讨论】:

  • 运行composer dump-autoload,它会被修复。
  • @STA 已经做到了!
  • 你在作曲家中添加了吗"autoload": { "psr-4": { "Tests\\": "tests/" } }
  • @AnkitJindal 是的,我有

标签: php unit-testing laravel-5 phpunit


【解决方案1】:

如果您的依赖类确实存在并且具有正确的命名空间,那么最可能的错误原因是(避免将以下示例复制到您的项目中,这绝对行不通):

  • composer.json 文件(根目录)没有相关的依赖记录(别忘了还有composer.lock文件),smth like:

    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    
  • 由于上述原因,vendor/autoload.php 文件(或其任何合并的同级文件,例如 vendor/composer/autoload_classmap.php,具体取决于您的情况) 可能会丢失相关的依赖记录,比如:

      return array(
          'PHPUnit\\Framework\\TestCase' => '/vendor/phpunit/phpunit/src/Framework/TestCase.php',
    

在大多数这样的情况下,它实际上是由 autoload.php 功能提供的一个缺失的依赖项,而这又是由 composer 故障引起的。因此,考虑到所有这些,尝试通过运行 composer self-update 更新 composer 本身,然后通过 composer update 更新您的依赖项。

【讨论】:

    猜你喜欢
    • 2016-05-09
    • 2017-03-06
    • 2021-03-15
    • 2013-05-16
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多