mcpField
F
find-and-run-tests

find-and-run-tests

github.com/cloudflare测试与质量9.1k51 次安装今天更新
代码仓库

关于 find-and-run-tests

面向 workerd 及其父级项目的测试技能,介绍如何查找和运行 Bazel 测试,并说明测试类型、目标发现、缓存处理和故障排查。

主要功能

  1. 01识别 workerd 测试类型
  2. 02用 bazel query 查找目标
  3. 03使用 Bazel 运行测试
  4. 04通过日志排查故障
  5. 05确认测试覆盖目标功能

适用场景

  1. 01查找源文件对应的测试
  2. 02运行并调试 workerd 测试
  3. 03了解父级项目的测试约定

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/cloudflare/workerd --skill find-and-run-tests

安装后在 Claude Code 中输入/find-and-run-tests确认已加载。

详细介绍

查找并运行测试

workerd 测试

测试类型
类型文件扩展名BUILD 宏目标后缀
JS/TS 集成测试.wd-testwd_test()无(目标名称 = 规则名称)
C++ 单元测试*-test.c++kj_test()无
查找目标
# Find test targets in a directory
bazel query 'kind("test", //src/workerd/api/tests:*)' --output label

# Find test targets matching a name
bazel query 'kind(".*_test", //src/workerd/...)' --output label 2>/dev/null | grep -i '<name>'

# Find tests that depend on a source file
bazel query 'rdeps(//src/..., //src/workerd/io:trace-stream, 1)' --output label 2>/dev/null | grep -i test
运行
# Stream test output (preferred for debugging)
bazel test //src/workerd/api/tests:url-test --test_output=streamed

# Run with fresh results (no cache)
bazel test //target --test_output=streamed --nocache_test_results

# Run specific test case within a kj_test
bazel test //target --test_arg='-f' --test_arg='test case name'
常用标志
标志用途
--test_output=streamed实时将测试输出流式传输到终端
--nocache_test_results强制重新运行,不使用缓存的结果
--test_timeout=120覆盖默认测试超时时间(秒)

父项目集成测试

如果 workerd 在父项目中作为子模块使用,该项目可能有自己的集成测试框架,并采用不同的约定。加载 parent-project-skills 技能以了解这些约定。

适用于任何集成测试框架的一般原则

带变体后缀的目标命名。 某些测试宏会通过添加变体后缀(例如 @、@all-autogates、@force-sharding),从单个源文件生成多个目标。如果 bazel 提示“is a source file, nothing will be built”或“No test targets were found”,你可能需要添加后缀。使用 bazel query 'kind("test", //path:*)' 查找实际可运行的目标名称。

缓存结果会掩盖更改。 修改测试文件或源代码后重新运行测试时,务必使用 --nocache_test_results。否则,bazel 会返回过时的缓存结果和过时的日志。

验证功能确实运行了。 测试通过后,在测试输出中搜索与功能相关的证据(脚本名称、进程类型、子请求、RPC 调用)。如果测试通过但没有证据表明功能确实运行了,那么该测试就无效——请参阅 test-driven-investigation 技能。

调试测试失败
  1. 更改后重新运行时,务必使用 --nocache_test_results。
  2. 检查测试日志:路径显示在 bazel 输出中:bazel-out/.../testlogs/.../test.log
  3. 搜索日志中的功能相关关键词,以验证功能确实运行了。
  4. 子请求不匹配(在会验证子请求的框架中)通常会显示实际请求与预期请求的详细信息——仔细比较控制标头。

评论

支持 Markdown