我正在将
laravel
从 5.5.*
升级到 5.6.0
。 Composer 安装运行良好。我正在尝试运行单元测试,此时会弹出此错误。
未找到类“..\Unit\UnitTestCase”
这是错误的堆栈跟踪:
致命错误:未捕获错误:类“PhiraterTest\Unit\UnitTestCase” 未找到于 /home/vagrant/code/phirater-l51/tests/unit/Phirater/AdditionalCurrency/CreateAdditionalCurrencyCommandHandlerTest.php:11 堆栈跟踪: #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(数组) #5 /home/vagrant/code/phirater-l51/vendor/phpunit/phpunit/src/TextUI/Command.php(169): PHPUnit\Runner\BaseTestRunner->getTest('tes 在 /home/vagrant/code/phirater-l51/tests/unit/Phirater/AdditionalCurrency/CreateAdditionalCurrencyCommandHandlerTest.php 11号线
我的单元测试位于
tests/
目录中。我的 UnitTestCase
课程由 \TestCase
课程扩展,而 TestCase
课程由 BrowserKitTestCase
扩展。我在这里做错了什么?有什么解决办法吗?
如果您的依赖类确实存在并且具有正确的命名空间,那么提到的错误最可能的原因是(避免将以下示例复制到您的项目中,这肯定不起作用):
composer.json文件(根目录)没有相关依赖记录(不要忘记composer.lock文件),类似:
"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
更新您的依赖项。