用途
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 条件下运行时跳过。
当测试仅在特定条件下不稳定而非普遍损坏时,应使用后三种条件跳过变体。
使用方式
- 向用户询问 GitHub issue 编号。
- 在测试函数的 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...
}
- 确保已导入 skip 包。
- 编辑后运行
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 编号进行跟踪。资料未提供其他语言、框架或平台的适用性说明。