From 9550f0347d9fa5fbd6ca18dcffdbd930d43f5521 Mon Sep 17 00:00:00 2001 From: liugang Date: Fri, 5 Sep 2025 09:36:57 +0800 Subject: [PATCH] * [misc] Remove commands that require development using git branches. --- .claude/rules/zentao-unit-test-guide.md | 95 +++++-------------------- 1 file changed, 17 insertions(+), 78 deletions(-) diff --git a/.claude/rules/zentao-unit-test-guide.md b/.claude/rules/zentao-unit-test-guide.md index a49d75997c..8f0e963757 100644 --- a/.claude/rules/zentao-unit-test-guide.md +++ b/.claude/rules/zentao-unit-test-guide.md @@ -30,42 +30,17 @@ --- **🚨🚨🚨 AI大模型必读警告 🚨🚨🚨** -**第一步:必须先切换到 feature/unittest/ai 分支!** -**第二步:每个测试用例必须包含至少5个测试步骤(r()...e()语句)!** -**第三步:必须使用 test/runtime/ztf 运行测试验证!** -**第四步:必须按照指定格式提交代码!** +**第一步:每个测试用例必须包含至少5个测试步骤(r()...e()语句)!** +**第二步:必须按照指定格式提交代码!必须使用 test/runtime/ztf 运行测试验证!** +**第三步:必须先使用 php 命令验证脚本没有错误再使用 test/runtime/ztf 验证测试是否通过** **⛔ 绝对禁止的行为:** -- 在开发分支上直接编写测试代码 - 测试步骤少于5个 - 不遵循提交信息格式 - 代码包含行尾空格(会导致提交失败) --- -## ⚠️ 重要:分支开发流程(必须执行) - -**任何单元测试脚本的开发都必须严格按照以下分支流程进行:** - -### 第一步:切换到测试分支(必须) -1. **测试分支名**:`feature/unittest/ai` -2. **检查当前分支**:确认当前处于测试分支 -3. **切换到测试分支**:如果当前没有处于测试分支,立即切换到测试分支进行开发 - -### 分支操作命令示例: -```bash -# 检查当前分支 -git branch - -# 切换到测试分支 -git switch feature/unittest/ai - -# 确认已切换到测试分支 -git branch -``` - -**🚨 警告:如果不切换到测试分支,将违反ZenTao开发规范,必须立即停止操作并切换到正确的分支!** - ## 🔍 核心概念说明 ### 🔑 关键概念:测试用例 vs 测试步骤 @@ -85,7 +60,7 @@ git branch **示例说明:** ```php // 这是一个测试用例:getUserById.php -r($userTest->getByIdTest(1)) && p('account') && e('admin'); // 测试步骤1:正常用户查询 +r($userTest->getByIdTest(1)) && p('account') && e('admin'); // 测试步骤1:正常用户查询 r($userTest->getByIdTest(999)) && p() && e(false); // 测试步骤2:不存在用户查询 r($userTest->getByIdTest(0)) && p() && e(false); // 测试步骤3:无效ID查询 r($userTest->getByIdTest(-1)) && p() && e(false); // 测试步骤4:负数ID查询 @@ -398,42 +373,13 @@ fields: ## 单元测试开发完整流程(必须按顺序执行) -### 🔴 步骤1:切换到测试分支(AI大模型必须首先执行) - -**⚠️ AI大模型执行指令:在生成任何代码之前,必须先执行以下分支命令** - -#### 1.1 检查当前分支 -```bash -# 执行此命令查看当前分支 -git branch -git status -``` - -#### 1.2 切换到指定测试分支 -```bash -# 必须切换到这个分支,分支名固定不变 -git switch feature/unittest/ai -``` - -#### 1.3 验证切换成功 -```bash -# 确认当前分支标记为 * feature/unittest/ai -git branch -``` - -**🚨 AI执行检查点:** -- [ ] 已执行 `git branch` 命令 -- [ ] 已执行 `git switch feature/unittest/ai` 命令 -- [ ] 已确认当前在 feature/unittest/ai 分支 -- [ ] 如果分支不存在,需要先创建:`git checkout -b feature/unittest/ai` - -### 步骤2:分析待测方法 +### 步骤1:分析待测方法 1. 确定方法所属模块和层次(Model/TAO/ZEN) 2. 分析方法参数类型和返回值 3. 理解业务逻辑和数据依赖关系 4. 识别可能的异常情况 -### 步骤3:设计测试用例和测试步骤 +### 步骤2:设计测试用例和测试步骤 1. **设计测试用例**:每个测试脚本对应一个测试用例,用于测试单个方法 2. **设计测试步骤**:在测试用例中设计多个测试步骤来验证不同场景 - 正常流程测试步骤 @@ -443,13 +389,13 @@ git branch 4. 确定每个步骤的断言点和期望结果 5. **🔴 强制要求:每个测试用例必须包含至少5个测试步骤** -### 步骤4:创建YAML数据文件(如需要) +### 步骤3:创建YAML数据文件(如需要) 1. 分析方法依赖的数据表 2. 设计符合业务逻辑的测试数据 3. 使用适当的数据生成规则 4. 考虑数据之间的关联关系 -### 步骤5:编写测试脚本 +### 步骤4:编写测试脚本 1. 创建测试执行脚本,包含完整的测试用例描述 2. 测试脚本使用小写的方法名称作为文件名,后缀统一为.php 3. **🔴 强制要求:每个测试用例必须包含至少5个测试步骤(r()...e()语句)** @@ -457,23 +403,23 @@ git branch 5. 配置数据准备和环境设置 6. 为每个测试步骤编写准确的断言验证 -### 步骤6:验证测试脚本(AI大模型必须执行验证) +### 步骤5:验证测试脚本(AI大模型必须执行验证) -**🔴 强制要求:必须先使用 php 命令运行脚本,如有报错进行修复,再使用 ztf 运行器验证** +**🔴 强制要求:必须先使用 php 命令运行脚本没有错误再使用 ztf 运行器验证** -#### 6.1 执行测试命令 +#### 5.1 执行测试命令 ```bash # 切换到测试运行目录 cd test/runtime -# 使用 php 命令运行测试脚本,检查是否有语法错误 +# 使用 php 命令运行测试脚本,检查是否有错误 php ../../module/{moduleName}/test/model/{methodName}.php # 使用 ztf 运行测试脚本 ./ztf run ../../module/{moduleName}/test/model/{methodName}.php ``` -#### 6.2 验证测试结果 +#### 5.2 验证测试结果 **✅ 测试通过标准:** - 通过数(PASS):1 - 失败数(FAIL):0 @@ -485,13 +431,14 @@ php ../../module/{moduleName}/test/model/{methodName}.php 3. 验证断言是否匹配实际结果 4. 修改测试脚本后重新运行 -#### 6.3 AI执行检查点 +#### 5.3 AI执行检查点 - [ ] 已切换到 test/runtime 目录 +- [ ] 已使用 php 命令运行测试脚本,确认无错误 - [ ] 已使用 ztf 命令运行测试 - [ ] 测试结果显示 PASS=1, FAIL=0, SKIP=0 - [ ] 如有失败,已根据错误信息修正代码 -### 🔴 步骤7:提交代码(强制要求) +### 🔴 步骤6:提交代码(强制要求) **测试验证通过后,必须按以下步骤提交代码:** 1. **添加测试文件到git(仅添加测试相关文件)**: @@ -500,7 +447,6 @@ php ../../module/{moduleName}/test/model/{methodName}.php git add module/{moduleName}/test/lib/{moduleName}.unittest.class.php git add module/{moduleName}/test/model/{methodName}.php git add module/{moduleName}/test/model/yaml/{tableName}_{methodName}.yaml - # 注意:不要添加规范文档文件到测试分支!规范文档应保留在开发分支上 ``` 2. **提交代码**: @@ -712,10 +658,6 @@ r($userTest->createTest($invalidUser)) && p('errors,account') && e('用户名不 ### 🔴 AI大模型强制检查清单(每项必须100%完成) -**📋 分支操作检查** -- [ ] 已执行 `git switch feature/unittest/ai` 切换分支 -- [ ] 已确认当前在 `feature/unittest/ai` 分支(git branch 显示*号) - **📋 代码生成检查** - [ ] 测试文件名使用小写方法名:`{methodName}.php` - [ ] 单元测试类名格式:`{moduleName}Test` @@ -725,6 +667,7 @@ r($userTest->createTest($invalidUser)) && p('errors,account') && e('用户名不 - [ ] **🚨 所有代码行尾无空格**:检查每行末尾是否清洁 **📋 测试验证检查** +- [ ] 已使用 `php` 命令验证测试脚本无语法错误 - [ ] 已使用 `cd test/runtime && ./ztf run` 命令运行测试 - [ ] 测试结果:PASS=1, FAIL=0, SKIP=0 - [ ] 所有断言都与实际输出匹配 @@ -740,13 +683,9 @@ r($userTest->createTest($invalidUser)) && p('errors,account') && e('用户名不 - [ ] **注释清晰**:测试步骤描述明确,期望结果准确 ### ⚠️ 常见错误避免 -- [ ] **避免直接在开发分支开发**:必须在测试分支上进行开发 - [ ] **避免不提交代码**:测试通过后必须提交代码 -- [ ] **避免将规范文档提交到测试分支**:规范文档应该保留在开发分支供后续参照使用 - [ ] **🚨 避免行尾空格**:所有生成的代码必须移除行尾空格,否则提交会被拒绝 --- **🎯 最终目标:通过遵循本指导文档,生成高质量、可维护的ZenTao单元测试脚本,确保代码质量和系统稳定性。** - -**🚨 重要提醒:任何跳过分支管理步骤的行为都违反了ZenTao开发规范,必须严格按照流程执行!**