Ubuntu16.04下Lumen5.6的PHPUnit命令无法运行问题排查
结合你描述的场景(默认测试文件、依赖已安装),这个报错大概率和PHPUnit的运行配置或命令使用方式有关,下面是几个常见的原因和解决办法:
错误的命令行参数
如果你运行PHPUnit时输入了类似phpunit Test.php的命令,系统会在当前项目根目录寻找名为Test.php的文件,而你的测试文件都在tests目录下且命名为ExampleTest.php,自然会找不到。解决方法很简单:直接在项目根目录运行不带额外参数的命令:phpunit或者指定正确的测试文件路径:
phpunit tests/ExampleTest.phpPHPUnit配置文件的路径规则错误
Lumen默认会使用项目根目录的phpunit.xml.dist(或者你复制后重命名的phpunit.xml)来定义测试的扫描规则。打开这个文件,检查<testsuites>节点下的配置,正常应该是这样的:<testsuites> <testsuite name="Application Test Suite"> <directory suffix="Test.php">./tests</directory> </testsuite> </testsuites>如果这里的
suffix被改成了Test.php以外的值,或者directory路径写错,就会导致PHPUnit找不到正确的测试文件。确认配置后保存,再重新运行PHPUnit即可。PHPUnit版本不兼容
Lumen 5.6对PHPUnit的版本有明确要求,需要使用PHPUnit 6.x或7.x版本。如果你通过Composer安装了过高(比如8.x及以上)或过低的版本,可能会出现解析错误,甚至触发奇怪的文件查找逻辑。可以通过以下命令检查当前PHPUnit版本:phpunit --version如果版本不匹配,修改
composer.json中的require-dev部分,指定兼容的版本:"require-dev": { "phpunit/phpunit": "^6.0 || ^7.0" }然后重新安装依赖并更新自动加载:
composer update --dev composer dump-autoloadComposer自动加载未更新
虽然你说已安装所有依赖,但有时候新创建项目后,自动加载缓存可能没有包含测试目录的文件。运行以下命令更新自动加载规则:composer dump-autoload之后再尝试运行PHPUnit。
内容的提问来源于stack exchange,提问作者lightup

