PHPUnit 10 XML配置验证报错的含义及解决方法咨询
PHPUnit 10 XML配置过时报错解决指南
问题描述
在基础PHP项目中引入PHPUnit 10(composer开发依赖配置如下):
"require-dev": { "phpunit/phpunit": "^10.0" }
执行vendor/bin/phpunit运行测试时,收到报错:
Your XML configuration validates against a deprecated schema. Migrate your XML configuration using "--migrate-configuration"!
当前使用的phpunit.xml内容:
<?xml version="1.0" encoding="UTF-8"?> <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd" bootstrap="vendor/autoload.php" colors="true" verbose="true" stopOnFailure="true" > <testsuites> <testsuite name="Unit"> <directory suffix="Test.php">./tests/Unit</directory> </testsuite> </testsuites> </phpunit>
报错含义
PHPUnit 10对XML配置文件的验证规则(schema)做了版本更新,你当前的配置基于旧版本(PHPUnit 9及更早)的规则,已被官方标记为弃用,必须升级到符合PHPUnit 10规范的配置格式才能消除报错。
解决方法
方法一:自动迁移(推荐)
直接执行PHPUnit提供的自动迁移命令,它会自动将你的phpunit.xml更新为符合PHPUnit 10要求的格式:
vendor/bin/phpunit --migrate-configuration
执行完成后,配置文件的schema路径、属性写法等会被自动调整,无需手动修改。
方法二:手动修改配置
如果自动迁移失败,或者你需要自定义调整配置,可以手动修改phpunit.xml:
- 更新schema路径:将
xsi:noNamespaceSchemaLocation的值从./vendor/phpunit/phpunit/phpunit.xsd改为./vendor/phpunit/phpunit/phpunit-10.xsd - 确认属性兼容性:PHPUnit 10中大部分旧属性仍可正常使用,若后续出现属性报错,可调整为新的配置结构(比如部分属性迁移到子标签中)
修改后的完整配置示例:
<?xml version="1.0" encoding="UTF-8"?> <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit-10.xsd" bootstrap="vendor/autoload.php" colors="true" verbose="true" stopOnFailure="true" > <testsuites> <testsuite name="Unit"> <directory suffix="Test.php">./tests/Unit</directory> </testsuite> </testsuites> </phpunit>
完成上述操作后,再次执行vendor/bin/phpunit即可正常运行测试,报错会消失。
内容的提问来源于stack exchange,提问作者Maik Lowrey
相关产品推荐
相关产品推荐

