php - 找不到类 '..\Unit\UnitTestCase'

标签 php unit-testing laravel-5 phpunit

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

Class '..\Unit\UnitTestCase' not found

这是错误的堆栈跟踪:

Fatal error: Uncaught Error: Class 'PhiraterTest\Unit\UnitTestCase' not found in /home/vagrant/code/phirater-l51/tests/unit/Phirater/AdditionalCurrencies/CreateAdditionalCurrencyCommandHandlerTest.php:11 Stack trace: #0 /home/vagrant/code/phirater-l51/vendor/phpunit/phpunit/src/Util/Fileloader.php(64): include_once() #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 on line 11

我的单元测试在 tests/ 目录中。我的 UnitTestCase 类由 \TestCase 类扩展,而 TestCase 类由 BrowserKitTestCase 扩展。我在这里做错了什么?可能的解决方案是什么?

最佳答案

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

  • 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 更新您的依赖项。

关于php - 找不到类 '..\Unit\UnitTestCase',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63258441/

相关文章:

php - CentOS 5.10 无法启用 php-openssl 扩展

c - 使用硬编码内存地址主机测试 C 程序

javascript - 使用 Angular JS 进行 Jasmine 测试

Python unittest,仅在测试失败时才做某事

php - Laravel 5 数组, key 保存在模型中

namespaces - 具有多态关系的命名空间 Laravel 5

php - 如何像浏览器一样使用 php 对 URL 进行编码

php - 计算第一个数组中键的总数

php - LARAVEL - 无法在 Controller 方法中调用函数

php - 如何使用 Propel 类委托(delegate)