本文件承载 RELEASE.md 和 Development.md 所要求的人工回归内容。
每次发布前(以及涉及 Excel/VSTO 交互的改动后)都应在真机 Excel 上完整执行一遍。
- Windows + Microsoft Excel 桌面版,VSTO Runtime 已安装。
- 加载项已在 Excel 中加载(Ribbon 出现“工作助手”选项卡)。
- 用于测试的工作簿至少包含:纯文本列、日期列(
yyyy-mm-dd)、百分比列、货币列、 含*/?/~字面量的文本列、含空单元格的列,各列数据量 ≥ 1000 行。 - 另备一个含合并单元格的工作簿(单区域、多区域、含公式、含错误值、含数组公式各一份)。
-
Release 构建 Exit Code 0 / 0 Error / 0 Warning:
msbuild .\eWorkhelper.sln /t:Rebuild /p:Configuration=Release /p:Platform="Any CPU" ` /p:SignManifests=true /p:ManifestCertificateThumbprint=<thumbprint> /v:minimal /nologo
-
通过
IWORKHELPER_MANIFEST_CERT_THUMBPRINT环境变量构建同样 Exit Code 0。 -
确认
bin/、obj/、publish/、.vsto、.manifest未进入 Git 暂存区。
- Excel 表格(ListObject):光标位于表格内某列 → 点击“批量过滤” → 正确识别表格范围与列标题。
- 已有 AutoFilter 区域:光标位于已启用筛选的区域内 → 正确复用现有区域,不新建筛选。
- 普通区域(需选标题行):未启用筛选的工作表 → 弹出标题行选择框 → 选择单行标题后正确建区域。
- 取消标题行选择:在选择框点“取消” → 不修改工作表,无错误弹窗(“取消选择不会修改工作表”)。
- 目标列不在区域内:选择标题行后目标列超出数据区 → 给出明确提示且不留残留筛选。
- 目标列在现有筛选区域外:光标列不在现有 AutoFilter 区域内 → 给出明确提示。
- 同名工作表:在另一个工作簿中创建同名工作表并触发标题行选择 → 必须被判为“不在当前工作表”。
- 文本列:等于 / 不等于 / 包含 / 不包含四种模式分别得到预期可见行。
- 日期列:输入界面上显示的日期文本(如
2024-01-01)→ 能正确匹配, 不出现“0 匹配 / 全部隐藏”。 - 百分比列:输入显示文本(如
15%)→ 能正确匹配;输入原始值(如0.15)也应能匹配。 - 货币列:输入界面上显示的金额文本 → 能正确匹配。
- 长文本单元格:列宽不足导致显示为
#####的单元格不参与匹配(不应把#####当成真实值)。 - 超过 255 字符的文本单元格:不因
Range.Text截断而误匹配(工具应给出可理解的提示或保持工作表不变)。 - 通配符字面量:值为
a*b、a?b、a~b的单元格在“等于”模式下能被精确匹配,*/?不被当作通配符。 - 大小写:
ABC与abc在四种模式下均按同一值处理(去重与匹配一致)。 - 空单元格:条件行留空被忽略;空值单元格的匹配行为符合预期。
- 全部命中 → 自动清除该字段筛选,所有行可见,提示中的匹配数与可见数一致。
- 部分命中 → 工作表仅显示命中行,提示“共检查 N 行,匹配 M 行”。
- 零命中 → 不隐藏全部行,给出“没有单元格与当前条件匹配,未修改工作表筛选状态”提示。
- 匹配唯一值超过 10000 项 → 给出容量提示且不修改工作表,不出现原始 COM 错误。
- 单个条件超过 8192 字符 → 在应用前给出长度提示。
- “清除本次过滤” → 仅清除本工具最近处理的目标字段,其他字段筛选保持不变。
- 未由本工具应用的筛选 → 提示“当前目标字段没有由批量过滤应用的筛选”。
- 重新打开同一筛选 → 恢复上次条件与匹配模式(“已恢复上次批量过滤条件”)。
- 外部(非本工具)筛选 → 加载当前可见唯一值并把模式置为“等于”。
- 大数据集(≥ 5 万行)应用过滤时:状态栏显示进度、等待光标出现、Excel 不卡死到无响应。
- 操作进行中按 Esc → 在下一个检查点取消,提示“操作已取消”,筛选状态与光标/状态栏均恢复。
- 操作进行中点击窗口关闭按钮 → 窗体不会被直接关闭(先取消),不出现已释放对象异常。
- 操作期间鼠标双击“应用过滤” → 不会重入执行。
- 在受保护工作表上触发范围识别 → 给出友好提示,不出现 CLR 未处理异常对话框。
- 反复触发失败路径(≥ 5 次)→ 加载项未被 Excel 禁用。
- 构造函数读取初始状态失败时(例如受保护工作表)→ 窗体仍可打开,提示“无法读取当前筛选状态”,可手工输入条件。
- 单区域合并 → 取消合并后各单元格填充原值。
- 多区域(Ctrl 多选)→ 全部处理,计数正确,同一区域不被重复处理。
- 含公式的合并区域 → 按 R1C1 复制语义填充(相对引用按各单元格位置偏移)。
- 含空值(
null)的合并区域 → 取消合并后保持空白。 - 含错误值(
#DIV/0!、#N/A等)→ 不把错误码写成数字,单元格仍是错误值。 - 含数组公式(CSE) → 给出明确的数组公式提示,而不是通用“操作失败”。
- 受保护工作表 → 给出明确的“工作表受保护”提示。
- 选区不含合并单元格 → 提示“当前选区中没有合并单元格”,不做任何修改。
- 选区为整列/整行等大范围 → 操作在可接受时间内完成,Excel 进程内存无异常增长。
- 处理失败发生后 → 提示中包含已完成区域数量,用户能判断需要手工检查的范围。
- 操作结束后
Application.Calculation、ScreenUpdating、EnableEvents均恢复原值。
- 连续执行“批量过滤”应用/清除 20 次以上后,关闭该工作簿 → Excel 中不再保留该工作簿的窗口。
- 关闭全部工作簿并退出 Excel →
EXCEL.EXE进程在合理时间内消失(无残留进程)。 - 任务管理器观察:重复批量操作过程中
EXCEL.EXE句柄数不持续单调增长。 - 关闭批量过滤窗口后再次打开 → 上下文被重新建立,功能正常(无“已释放对象”异常)。
- 关闭工作簿后再点击“批量过滤” → 给出友好提示而不是崩溃。
- 自定义“工作助手”选项卡正常显示,位于 Ribbon 末端(自定义选项卡,不与内置选项卡冲突)。
- 分组“数据工具”“关于”与按钮“批量过滤”“取消合并”“关于”文案正确。
- 点击“关于” → 版本号与程序集
AssemblyInformationalVersion一致。
| 日期 | 版本 | 执行人 | 环境(Office 版本/位数) | 结果 | 备注 |
|---|---|---|---|---|---|
未在本清单覆盖的场景(不同 Office 位数、受信任位置部署、ClickOnce/MSI 安装)需在发布环境中单独验证, 并在上表备注中记录结论。