mcpField
F
freeze-tests

freeze-tests

github.com/proffesor-for-testing测试与质量51958 次安装今天更新
代码仓库

关于 freeze-tests

freeze-tests 是一个 skill,可在重构期间阻止对匹配测试文件的写入和编辑,帮助保持测试所记录的行为。需要修改测试时可停用该模式。

主要功能

  1. 01阻止写入匹配的测试文件
  2. 02阻止编辑匹配的测试文件
  3. 03支持启用和停用
  4. 04冻结期间仍可运行测试

适用场景

  1. 01重构时保持测试定义不变
  2. 02优化性能并保留原有行为
  3. 03更新依赖时保持测试不变

安装

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

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill freeze-tests

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

附带文件scripts/block-test-edits.sh

详细介绍

冻结测试模式

启用后,会阻止对测试文件的所有修改。在重构期间使用,以确保行为(由测试体现)得到保留。

功能说明

阻止对匹配以下测试模式的任何文件执行 Write 和 Edit 操作:

  • **/*.test.{ts,js,tsx,jsx}
  • **/*.spec.{ts,js,tsx,jsx}
  • **/__tests__/**
  • **/tests/**

启用

/freeze-tests

使用 /freeze-tests off 停用。

Hook 配置

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Write|Edit",
        "hook": ".claude/skills/freeze-tests/scripts/block-test-edits.sh",
        "condition": "file matches **/*.test.* OR **/*.spec.* OR **/__tests__/** OR **/tests/**"
      }
    ]
  }
}

执行逻辑

#!/bin/bash
# block-test-edits.sh
FILE="$1"

if echo "$FILE" | grep -qP '\.(test|spec)\.(ts|js|tsx|jsx)$|__tests__|/tests/'; then
  echo "BLOCKED: Test files are frozen during refactoring."
  echo "If tests need updating, deactivate with: /freeze-tests off"
  exit 1
fi

使用场景

  1. 重构:更改代码结构,但不改变行为
  2. 性能优化:提升代码速度,但不改变逻辑
  3. 依赖更新:升级库,同时保留原有行为

注意事项

  • 如果测试在重构期间失败,冻结的测试无法修复——这正是设计目的(说明重构破坏了行为)
  • 如果重构需要修改测试,那就不是纯粹的重构——请停用此模式,并将其视为功能变更
  • 此模式不会阻止运行测试,只会阻止修改测试文件

评论

支持 Markdown