SuperAPI AI 工具集

skip-test-with-issue

测试与质量

查看项目

更新于 10-16 06:05

技能介绍

用途

skip-test-with-issue 用于在 CockroachDB 代码库中跳过不稳定(flaky)或已损坏的测试,同时保留对问题的跟踪。它要求跳过测试时关联一个 GitHub issue 编号,避免测试被无记录地禁用。当被要求跳过测试、禁用测试或将测试标记为 flaky 时使用。

主要能力

该技能基于 github.com/cockroachdb/cockroach/pkg/testutils/skip 包,提供以下跳过方式:

  • skip.WithIssue(t, issueNum, "reason"):无条件跳过测试,并关联跟踪 issue。
  • skip.UnderRace(t, issueNum, "reason"):仅在使用 race detector 运行时跳过。
  • skip.UnderDeadlock(t, issueNum, "reason"):仅在使用 deadlock detector 运行时跳过。
  • skip.UnderDuress(t, issueNum, "reason"):仅在 stress/duress 条件下运行时跳过。

当测试仅在特定条件下不稳定而非普遍损坏时,应使用后三种条件跳过变体。

使用方式

  1. 向用户询问 GitHub issue 编号。
  2. 在测试函数的 defer 语句之后、测试主体之前添加跳过调用。示例:
func TestFlakyTest(t *testing.T) {
    defer leaktest.AfterTest(t)()
    defer log.Scope(t).Close(t)
    skip.WithIssue(t, 167182, "flaky due to timeout")

    // test body...
}
  1. 确保已导入 skip 包。
  2. 编辑后运行 crlfmt -w -tab 2 <file> 进行格式化。

注意事项

  • issue 编号是整数,不是字符串。
  • 跳过调用应放在 defer 语句之后、测试主体之前。
  • 原因需具体,例如写 "flaky due to timeout" 而不是只写 "flaky"。
  • 多个由同一根因导致的测试可以共享同一个 issue 编号。
  • 确保 skip 包已被导入。
  • 编辑后运行 crlfmt -w -tab 2 <file>。

适用场景

适用于 CockroachDB 仓库中需要临时跳过测试的开发与维护工作,尤其是处理 flaky 测试、已知损坏测试,或仅在 race、deadlock、duress 等特定条件下失败的测试。

限制

该技能面向 CockroachDB 代码库及其 skip 包,依赖 GitHub issue 编号进行跟踪。资料未提供其他语言、框架或平台的适用性说明。