5.7 KiB
5.7 KiB
运行测试
目录
PHP 单元测试
要在 WooCommerce 插件目录中运行 PHP 单元测试,请使用以下命令:
基础测试命令
# 运行所有 PHP 单元测试
pnpm run test:php:env
# 运行特定测试类
pnpm run test:php:env -- --filter TestClassName
# 运行特定测试方法
pnpm run test:php:env -- --filter TestClassName::test_method_name
# 以详细输出运行测试
pnpm run test:php:env -- --verbose --filter TestClassName
例子
# 运行支付扩展建议测试
pnpm run test:php:env -- --filter PaymentsExtensionSuggestionsTest
# 运行特定测试方法
pnpm run test:php:env -- --filter PaymentsExtensionSuggestionsTest::test_get_country_extensions_count_with_merchant_selling_online
常用测试命令
运行目录测试
# 运行目录中的所有测试
pnpm run test:php:env -- tests/php/src/Internal/Admin/
运行匹配样板的测试
# 运行所有管理员测试
pnpm run test:php:env -- --filter "Admin.*Test"
# 运行名称中包含“支付”的所有测试
pnpm run test:php:env -- --filter "Payment"
在首次失败时停止
# 在开发期间快速识别问题很有用
pnpm run test:php:env -- --stop-on-failure
获取测试覆盖率
# 获取覆盖率报告(如果已配置)
pnpm run test:php:env -- --coverage-text
测试环境
工作原理
测试通过 wp-env 在 Docker 中运行,并自动配置 WordPress/WooCommerce(PHPUnit 9.6.24,PHP 8.1)。
环境设置
测试环境是自动管理的,但您可以在需要时进行控制:
# 开始测试环境
wp-env start
# 停止测试环境
wp-env stop
# 重启测试环境
wp-env restart
# 销毁并重新创建环境
wp-env destroy
wp-env start
故障排除测试
| 问题 | 解决方案 |
|---|---|
| "Class not found" 错误 | 运行 pnpm install |
| 测试挂起/无法开始 | wp-env stop && wp-env start 或 wp-env destroy && wp-env start |
| 权限错误 | 检查 Docker 权限 |
| Xdebug 警告 | 忽略(不影响结果) |
解读测试输出
成功的测试运行
PHPUnit 9.6.24
.................................................. 50 / 100 ( 50%)
.................................................. 100 / 100 (100%)
时间: 00:02.345, 内存: 24.00 MB
确定 (100 个测试, 250 个断言)
失败测试
PHPUnit 9.6.24
.....F................................................. 50 / 100 ( 50%)
.................................................. 100 / 100 (100%)
时间: 00:02.345, 内存: 24.00 MB
有 1 个失败:
1) PaymentsExtensionSuggestionsTest::test_get_country_extensions_count_for_online_merchants 使用数据集 "美国" ('US', 5)
预期美国在线商户有 5 个扩展
断言失败,实际值 4 与预期值 5 不匹配。
/path/to/test/file.php:123
失败!
测试: 100, 断言: 250, 失败: 1.
理解测试失败
测试失败信息提供:
- 哪个测试失败: 测试类和方法名称
- 测试数据: 已使用的数据集(如果使用数据提供者)
- 预期与实际: 预期结果和实际接收到的结果
- 位置: 断言失败的文件和行号
最佳实践
开发期间
-
运行特定测试 针对您正在更改的代码:
pnpm run test:php:env -- --filter YourTestClass -
使用详细模式 进行调试时:
pnpm run test:php:env -- --verbose --filter YourTestClass -
在首次失败时停止 以一次专注于一个问题:
pnpm run test:php:env -- --stop-on-failure --filter YourTestClass
提交前
-
运行所有受影响的测试:
pnpm run test:php:env -- tests/php/src/Internal/YourFeature/ -
确保所有测试通过 后再提交
-
检查代码质量(参见 code-quality.md)
测试配置
测试配置文件:plugins/woocommerce/phpunit.xml
此文件包含:
- 测试套件定义
- 引导文件
- 覆盖率设置
- 日志记录配置
JavaScript/Jest 测试
运行 JavaScript 测试
要为管理员客户端运行 JavaScript 测试,请导航到 client/admin 目录:
# 首先导航到 client/admin 目录
cd client/admin
# 运行所有 JavaScript 测试
pnpm test:js
# 在监视模式下运行测试
pnpm test:js -- --watch
# 运行特定的测试文件
pnpm test:js -- status-badge.test.tsx
# 运行测试并生成覆盖报告
pnpm test:js -- --coverage
测试文件位置
- JavaScript/Jest 测试:
client/admin/client/**/*.test.tsx或*.test.ts - Jest 配置:
client/admin/jest.config.js
JavaScript 测试故障排除
有关详细的 Jest 配置和测试样板/区块样板,请参阅 client/admin/CLAUDE.md。
常见问题:
- 测试未找到:确保您在
client/admin目录中 - 模块解析错误:在
client/admin目录中运行pnpm install - 缓存问题:尝试
pnpm test:js -- --clearCache
注意事项
- 测试环境会自动处理 WordPress/WooCommerce 设置
- 支付测试中的扩展数量必须与实际实现完全一致
- 测试数据提供器对于测试多种场景非常有用
- 始终检查测试输出以获取有用的错误信息
- 有关 React/TypeScript 测试样板,请参阅
client/admin/CLAUDE.md