woocommerce/.ai/skills/woocommerce-dev-cycle/zh-cn/running-tests.md
2026-04-15 10:18:01 +08:00

5.7 KiB
Raw Permalink Blame History

运行测试

目录

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/WooCommercePHPUnit 9.6.24PHP 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 startwp-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.

理解测试失败

测试失败信息提供:

  • 哪个测试失败: 测试类和方法名称
  • 测试数据: 已使用的数据集(如果使用数据提供者)
  • 预期与实际: 预期结果和实际接收到的结果
  • 位置: 断言失败的文件和行号

最佳实践

开发期间

  1. 运行特定测试 针对您正在更改的代码:

    pnpm run test:php:env -- --filter YourTestClass
    
  2. 使用详细模式 进行调试时:

    pnpm run test:php:env -- --verbose --filter YourTestClass
    
  3. 在首次失败时停止 以一次专注于一个问题:

    pnpm run test:php:env -- --stop-on-failure --filter YourTestClass
    

提交前

  1. 运行所有受影响的测试:

    pnpm run test:php:env -- tests/php/src/Internal/YourFeature/
    
  2. 确保所有测试通过 后再提交

  3. 检查代码质量(参见 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